0

可能重复:
C# 可以将值类型与 null 进行比较

为什么等式运算符重载的 DateTime 和 Decimal 值类型可以与空值进行比较?

我一直认为值类型是不可为空的值,但我可以编写以下代码:

DateTime dateTime = DateTime();

if(dateTime == null)
    //do something

编译不会抛出异常,但是比较总是错误的。

先感谢您。

4

1 回答 1

0

DateTime?这是因为双方都有隐式转换为可用。这是一个不理想的极端情况,基本上:(

某些情况下,它会发出警告,但并非对所有人都发出警告(例如,这里没有)。

例如,使用int

int x = 5;

if(x == null)
{
    Console.WriteLine();
}

您将收到以下警告:

警告 CS0472:表达式的结果始终为“假”,因为“int”类型的值永远不会等于“int”类型的“null”?

于 2011-08-18T20:46:36.967 回答