可能重复:
C# 可以将值类型与 null 进行比较
如果我尝试null
在 C# 中分配给不可为空的类型:
System.DateTime time = null;
我会得到一个编译时错误:
错误 CS0037:无法将 null 转换为“System.DateTime”,因为它是不可为空的值类型
这是有道理的。但是,如果将相同类型与 进行比较null
:
System.DateTime time = obtainFromSomewhere();
if( time == null ) {
//whatever;
}
没有编译时错误。这对我来说没有意义——如果我不能分配null
,那为什么会这样null
呢?
为什么允许我将不可为空的类型与 进行比较null
?