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

时间:2013-04-25 15:07:44

标签: c# asp.net datetimepicker

得到一个让我难过的错误。我假设它很简单,但似乎无法解决这个问题,这是导致错误的代码:

if ((string) _nullableDateTimePicker1.Value != string.Empty && _nullableDateTimePicker1.Value != null) {
     _nullableDateTimePicker1.Value = null;
}

点击我窗体中的搜索按钮时,这就是我弹出的内容:

  

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

7 个答案:

答案 0 :(得分:1)

_nullableDateTimePicker1的可空类型实例的类型似乎是DateTime,它不是字符串;您需要与DateTime进行比较或将其转换为字符串。

所以,从最简单的意义上讲:

_nullableDateTimePicker1.Value.ToString() != string.Empty

但是,请注意不检查HasValue的危险,因为如果NullReferenceExceptionValue,这会导致null;所以,你的支票有点倒退了。

即便如此,如果不是 null,那么你会有DateTime.MinValue,因此ToString不会返回空字符串。因此,检查可以为空的东西上的null,如果不是null,则与DateTime.MinValue进行比较(除非您的代码中有特定的怪癖,这意味着它可能有不同< / em>'default'。

答案 1 :(得分:0)

if ((string) _nullableDateTimePicker1.Value .....

可能_nullableDateTimePicker1.Value会返回DateTime。如消息所述,您无法直接将DateTime投射到string

答案 2 :(得分:0)

在这部分(string) _nullableDateTimePicker1.Value != string.Empty中,您试图将值转换为字符串。但ValueDateTime。这个if的第二部分就足够了。

答案 3 :(得分:0)

(string) _nullableDateTimePicker1.Value
当_nullableDateTimePicker1为空时,

抛出异常。

尝试检查值是否为空时,请勿使用(string)

答案 4 :(得分:0)

看起来您的_nullableDateTimePicker1对象是Nullable<DateTime>DateTime?),在这种情况下,您收到此错误是因为您无法将其强制转换为字符串。

(string) _nullableDateTimePicker1.Value

看起来你只是想确保它有一个有效的DateTime,在这种情况下你只需要进行空检查。我不知道你到底想要做什么,这是我的建议。

答案 5 :(得分:0)

此代码应该有效:

if (_nullableDateTimePicker1.Value != null && Convert.ToString(_nullableDateTimePicker1.Value) != string.Empty) {
     _nullableDateTimePicker1.Value = null;
}

答案 6 :(得分:0)

DateTimePicker.Value返回DateTime类型,你不能把它转换为字符串,你需要的是转换为字符串。

string dateTime = _nullableDateTimePicker1.Value.ToString();

所以你的代码将是:

string dateTime = _nullableDateTimePicker1.Value.ToString();
if (!string.IsNullOrEmpty(dateTime)) 
{
    dateTime = null; 
 }

我不确定将DateTimePicker值设置为null。