0
爲什麼值類型爲DateTime和十進制其平等運算符重載可與空值進行比較?
我一直以爲值類型爲非nullables值,但我可以寫下面的代碼:
DateTime dateTime = DateTime();
if(dateTime == null)
//do something
編譯不會拋出異常,但比較總是假的。
預先感謝您。
爲什麼值類型爲DateTime和十進制其平等運算符重載可與空值進行比較?
我一直以爲值類型爲非nullables值,但我可以寫下面的代碼:
DateTime dateTime = DateTime();
if(dateTime == null)
//do something
編譯不會拋出異常,但比較總是假的。
預先感謝您。
這是因爲有一個隱式轉換爲可從雙方獲得的DateTime?
。這是一個有點這是不理想的一個角落情況下,基本上:(
在一些箱子它給出了一個警告,但不是所有的(所以不在這裏,例如)。
例如,使用int
:
int x = 5;
if(x == null)
{
Console.WriteLine();
}
你會得到這樣的警告:
警告CS0472:表達式的結果總是因爲類型的值「假」 'int'永遠不會等於'int'類型的'null'