<分区>
下面是一些示例代码:
static DateTime time;
if (time == null)
{
/* do something */
}
既然DateTime
不能为null,为什么这段代码可以通过?
编辑:
问题不仅在于此代码总是返回 false,还在于为什么在这样的比较中允许像 DateTime
这样从不 null 的东西。
标签 c#
<分区>
下面是一些示例代码:
static DateTime time;
if (time == null)
{
/* do something */
}
既然DateTime
不能为null,为什么这段代码可以通过?
编辑:
问题不仅在于此代码总是返回 false,还在于为什么在这样的比较中允许像 DateTime
这样从不 null 的东西。
最佳答案
虽然time
是一个不可为空的值类型,但它可以被转换为可空的并与null
进行比较。比较会产生 false
,这是一个有效的结果。
然而,这并不意味着它是一个好的代码。诸如 re:sharper 之类的工具会用一条警告标记这一行:“表达式总是错误的”。
关于c# - 为什么这是一个有效的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29822826/