无法将类型“System.DateTime”隐式转换为“string”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将类型“System.DateTime”隐式转换为“string”相关的知识,希望对你有一定的参考价值。

protected void Submit_Click3(object sender, EventArgs e)


try


FinalClassDataContext db = new FinalClassDataContext();
FinalPtab myspace = new FinalPtab();
myspace.StuID = Session["UserID"].ToString();
myspace.PChara = Characteristic.Text.Trim();
myspace.PResults = Results.Text.Trim();
myspace.PCloseTime = CloseTime.Text.Trim();
myspace.PAchieve = Achievement.Text.Trim();

db.FinalPtab.InsertOnSubmit(myspace);
///提交插入myspace表
db.SubmitChanges();//更新数据库
db.Dispose();//关闭数据库


myspace.PCloseTime = CloseTime.Text.Trim();这里出现错误了。

参考技术A myspace.PCloseTime 的类型应该是DateTime的吧
你把需要的内容强制转换一下试试
Convert.ToDateTime(CloseTime.Text.Trim());本回答被提问者采纳
参考技术B CloseTime.Text.Tostring().Trim();
这样看看Trim()方法去空格默认为字符串才可以的吧!
打Datetime的数据用Tostring()转换字符串先追问

无法将类型“string”隐式转换为“System.DateTime”,变成这样了。。

参考技术C myspace.PCloseTime = CloseTime.Value;追问

“System.Web.UI.WebControls.TextBox”不包含“value”的定义,并且找不到可接受类型为“System.Web.UI.WebControls.TextBox”的第一个参数的扩展方法“value”(是否缺少 using 指令或程序集引用?)

追答

我还以为你的CloseTime是日期的控件呢

参考技术D mark!

无法将类型“int”隐式转换为“short”[重复]

【中文标题】无法将类型“int”隐式转换为“short”[重复]【英文标题】:Cannot implicitly convert type 'int' to 'short' [duplicate] 【发布时间】:2011-08-18 10:59:03 【问题描述】:

我写了以下小程序打印出斐波那契数列:

static void Main(string[] args)

    Console.Write("Please give a value for n:");
    Int16 n = Int16.Parse(Console.ReadLine());

    Int16 firstNo = 0;
    Int16 secondNo = 1;

    Console.WriteLine(firstNo);
    Console.WriteLine(secondNo);

    for (Int16 i = 0; i < n; i++)
    
        //Problem on this line                    
        Int16 answer = firstNo + secondNo;

        Console.WriteLine(answer);

        firstNo = secondNo;
        secondNo = answer;
    

    Console.ReadLine();


编译消息是:

不能隐式转换类型'int' 太短'。显式转换 存在(您是否缺少演员表?)

既然涉及的所有内容都是 Int16(短),那么为什么要进行任何隐式转换?更具体地说,为什么在这里失败(而不是在最初将 int 分配给变量时)?

非常感谢您的解释。

【问题讨论】:

哪一行出错了?为什么你出于兴趣使用短裤? @Tom id 假设他在这一行有评论问题所在的行 相关:***.com/questions/1084668/… 我建议你直接使用 int 来代替,除非有很好的理由使用 Int16 我只是在使用Int16 进行实验,所以我可以看到序列再次开始(当Int16 的宽度不能再容纳太大的值时) 【参考方案1】:

在执行 add 函数时,Microsoft 会将您的 Int16 变量转换为 Int32

更改以下内容:

Int16 answer = firstNo + secondNo;

进入...

Int16 answer = (Int16)(firstNo + secondNo);

【讨论】:

令人困惑,为什么要这样设计?将两个Int64 加在一起时是否会导致问题(它们不适合Int32 的空间)? 多种原因,其他一些答案指向解释为什么的帖子。【参考方案2】:

加号运算符先将操作数转换为 int,然后再进行加法。所以结果是int。您需要将其显式转换回短,因为从“较长”类型到“较短”类型的转换是显式的,这样您就不会因隐式转换意外丢失数据。

至于为什么将int16强制转换为int,答案是,因为这是C# spec中定义的。而 C# 是这种方式是因为它被设计为与 CLR 的工作方式紧密匹配,而 CLR 只有 32/64 位算术而不是 16 位。 CLR 之上的其他语言可能会选择以不同的方式公开这一点。

【讨论】:

【参考方案3】:

添加两个Int16 值会产生一个Int32 值。您必须将其转换为 Int16:

Int16 answer = (Int16) (firstNo + secondNo);

您可以通过将所有号码切换为Int32 来避免此问题。

【讨论】:

【参考方案4】:

线

 Int16 answer = firstNo + secondNo;

被解释为

 Int16 answer = (Int32) (firstNo + secondNo);

仅仅是因为没有 Int16 算术之类的东西。

简单的解决方案:不要不使用 Int16。使用 Int32 或简单地使用 int

int 是您的默认整数类型。 short 和 long 仅在特殊情况下使用。

【讨论】:

【参考方案5】:

阅读 Eric Lippert 对这些问题的回答

Integer summing blues, short += short problem Unary minus on a short becomes an int?

【讨论】:

【参考方案6】:

两个Int16变量相加的结果是Int32

Int16 i1 = 1;
Int16 i2 = 2;
var result = i1 + i2;
Console.WriteLine(result.GetType().Name);

它输出Int32

【讨论】:

【参考方案7】:

这是因为两个Int16 相加的结果是Int32。 在此处查看“转化”段落:http://msdn.microsoft.com/en-us/library/ybs77ex4%28v=vs.71%29.aspx

【讨论】:

【参考方案8】:

问题是,正如其他人已经指出的那样,添加两个 Int16 会导致 Int32。 您的第二个问题,为什么在这两个变量的声明中还没有出现这个问题在这里解释:http://msdn.microsoft.com/en-us/library/ybs77ex4%28v=VS.71%29.aspx:

short x = 32767;

在前面的声明中,整数文字 32767 隐式地从 int 转换为 short。如果整数文字不适合短存储位置,则会发生编译错误。

因此,它在您的声明中起作用的原因仅仅是因为已知所提供的文字适合 short

【讨论】:

【参考方案9】:

出于某种奇怪的原因,您可以使用 += 运算符来添加短裤。

short answer = 0;
short firstNo = 1;
short secondNo = 2;

answer += firstNo;
answer += secondNo;

【讨论】:

以上是关于无法将类型“System.DateTime”隐式转换为“string”的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 无法将类型“System.DateTime”隐式转换为“string”

无法将类型“System.DateTime”隐式转换为“string”是啥意思?怎么改正?

提示:无法将类型为“System.DateTime”的对象强制转换为类型“System.String”。

无法将类型为“System.DateTime”的对象强制转换为类型“System.String”

C# 无法将类型 system.DateTime转换成 string[]

获取“'<null>' 和 'System.DateTime' 之间没有隐式转换”错误消息 [关闭]