2011-08-18 208 views
0

可能重複:
C# okay with comparing value types to null怪異的行爲

爲什麼值類型爲DateTime和十進制其平等運算符重載可與空值進行比較?

我一直以爲值類型爲非nullables值,但我可以寫下面的代碼:

DateTime dateTime = DateTime(); 

if(dateTime == null) 
    //do something 

編譯不會拋出異常,但比較總是假的。

預先感謝您。

回答

0

這是因爲有一個隱式轉換爲可從雙方獲得的DateTime?。這是一個有點這是不理想的一個角落情況下,基本上:(

一些箱子它給出了一個警告,但不是所有的(所以不在這裏,例如)。

例如,使用int

int x = 5; 

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

你會得到這樣的警告:

警告CS0472:表達式的結果總是因爲類型的值「假」 'int'永遠不會等於'int'類型的'null'