0

得到一个让我难过的错误。我假设它很简单,但似乎无法弄清楚这一点,这是导致错误的代码:

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

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

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

4

7 回答 7

1

_nullableDateTimePicker1看起来is的可空类型实例的类型DateTime不是字符串;您需要与 a 进行比较DateTime或将其转换为字符串。

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

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

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

即使那样,如果不是 null,您也会有DateTime.MinValue,因此ToString不会返回空字符串。因此,检查null可空的东西,如果不是null,比较DateTime.MinValue(除非你的代码中有一个特别的怪癖,这意味着它可能有不同的“默认”。

于 2013-04-25T15:10:09.957 回答
0

此代码应该可以工作:

if (_nullableDateTimePicker1.Value != null && Convert.ToString(_nullableDateTimePicker1.Value) != string.Empty) {
     _nullableDateTimePicker1.Value = null;
}
于 2013-04-25T15:13:24.843 回答
0

DateTimePicker.Value 返回 DateTime 类型,您不能将其转换为字符串,您需要转换为字符串。

string dateTime = _nullableDateTimePicker1.Value.ToString();

所以你的代码将是:

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

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

于 2013-04-25T15:14:19.820 回答
0

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

可能,_nullableDateTimePicker1.Value返回一个DateTime. 正如消息所解释的,您不能直接将 aDateTime转换为 a string

于 2013-04-25T15:09:46.763 回答
0

在这一部分(string) _nullableDateTimePicker1.Value != string.Empty中,您尝试将值转换为字符串。但是ValueDateTime。如果第二部分就足够了。

于 2013-04-25T15:10:05.160 回答
0
(string) _nullableDateTimePicker1.Value

当 _nullableDateTimePicker1 为空时引发异常。

(string)尝试检查值是否不为空时不要使用

于 2013-04-25T15:10:59.160 回答
0

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

(string) _nullableDateTimePicker1.Value

看起来您只是想确保它具有有效的 DateTime,在这种情况下,您只需要进行 null 检查。在不确切知道您要做什么的情况下,这是我的建议。

于 2013-04-25T15:11:10.710 回答