无法将类型“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();这里出现错误了。
你把需要的内容强制转换一下试试
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”