得到一个让我难过的错误。我假设它很简单,但似乎无法解决这个问题,这是导致错误的代码:
if ((string) _nullableDateTimePicker1.Value != string.Empty && _nullableDateTimePicker1.Value != null) {
_nullableDateTimePicker1.Value = null;
}
点击我窗体中的搜索按钮时,这就是我弹出的内容:
无法将'System.DateTime'类型的对象强制转换为'System.String'。
答案 0 :(得分:1)
_nullableDateTimePicker1
的可空类型实例的类型似乎是DateTime
,它不是字符串;您需要与DateTime
进行比较或将其转换为字符串。
所以,从最简单的意义上讲:
_nullableDateTimePicker1.Value.ToString() != string.Empty
但是,请注意不检查HasValue
的危险,因为如果NullReferenceException
为Value
,这会导致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
中,您试图将值转换为字符串。但Value
是DateTime
。这个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。