为什么值类型为DateTime和等于运算符重载的Decimal可以与空值进行比较?
我一直认为值类型是非nullables值,但我可以编写以下代码:
DateTime dateTime = DateTime();
if(dateTime == null)
//do something
编译不会抛出异常,但比较始终为false。
提前谢谢。
答案 0 :(得分:0)
这是因为双方都可以隐式转换为DateTime?
。这是一个不太理想的角落案例,基本上是:(
在某些个案例中,它会发出警告,但不是全部(例如,不在此处)。
例如,使用int
:
int x = 5;
if(x == null)
{
Console.WriteLine();
}
你会收到这个警告:
警告CS0472:表达式的结果始终为“false”,因为类型“int”的值永远不等于“int”类型的“null”