为什么这是一个有效的比较

时间:2015-04-23 11:59:36

标签: c#

以下是一些示例代码:

static DateTime time;
if (time == null)
{
/* do something */
}

由于DateTime不能为空,为什么这段代码会编译?

修改 问题不仅在于此代码将始终返回false,而且为什么在此类比较中允许使用DateTime 从不 null的内容。

1 个答案:

答案 0 :(得分:6)

虽然time属于非可空值类型,但可以将其转换为可空并与null进行比较。比较将产生false,这是一个有效的结果。

然而,这并不意味着它是一个很好的代码。工具,例如re:sharper,会标记此行,并显示警告说"表达式始终为假"。