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