我是從Wrox的閱讀可空類型和運算符和整個下面的語句來:可空類型和運算符
當比較可空類型,如果只有一個操作數爲空值,比較將永遠等於錯誤。這意味着你不能僅僅因爲它的對立是假的而假定條件是真的。
現在,我得到了第一條語句的含義,但沒有得到第二條語句。 請您詳細說明一下嗎?
我是從Wrox的閱讀可空類型和運算符和整個下面的語句來:可空類型和運算符
當比較可空類型,如果只有一個操作數爲空值,比較將永遠等於錯誤。這意味着你不能僅僅因爲它的對立是假的而假定條件是真的。
現在,我得到了第一條語句的含義,但沒有得到第二條語句。 請您詳細說明一下嗎?
看起來好像引用是說任何與null類型的比較都會返回null,而不管操作數如何。
所以像(null != 5)
會返回false
,其中(null == 5)
也將返回false。
現在,有趣的是,當我跑的程序,null != 5
返回真正,所以雖然我不能驗證C#2.0中這句話,這絕對不是真的再在C#4.0 +
這是示例代碼我使用:
int? a = null;
int? b = 5;
if (a != b)
{
Console.WriteLine("A != B");
}
if (a == b)
{
Console.WriteLine("A == B");
}
這是輸出
A!= B
按任意鍵繼續。 。 。
這報價是錯誤的,MSDN的官方源:http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
當您執行可空類型的比較,如果一個 可空類型的值是零,另一種是不,所有比較 評估爲假除了!=(不等於)。
第二條語句只是意味着一個比較和其相對的可以是兩個假,例如> = b和a < b都是假的。
這是邏輯。空類型意味着一個未知值。現在嘗試計算5 < null,5 < = null,5 == null,5 > = null,5 > null。你無法準確計算出其中的任何一個,它們也不是真的或假的,它們是未知的,但是錯誤比真實更有意義。例外是5!= null。一個確切的數字不是未知的,所以它更有意義,它是真實的而不是假的。所以==和!=是彼此相反的,這很容易,但是你不能說更少的比較。這是他們製作C#/ .NET時的設計選擇。在另一方面
SQL得到它完全正確,我認爲有三值邏輯,在這裏看到:http://en.wikipedia.org/wiki/Null_%28SQL%29#Comparisons_with_NULL_and_the_three-valued_logic_.283VL.29
你在哪裏讀書呢?它在哪裏我們可以去看看它? –
你可以肯定地認爲,如果一個條件的相反是錯誤的,那就是真的 - 這就是相反的意思。 –
不,它來自專業C#4和.NET 4 –