x is null 與x == null
在C# 中,使用== 和is 比較對象與null 傳統上是類似的。然而,C# 7 引入了一個新的運算符 is null,這就提出了一個問題:與傳統的 == null 相比,使用它有什麼優勢嗎?
語意
與流行的看法相反,x == null 和 x is null 的語意並不相同。雖然它們都將物件與 null 進行比較,但與 null 以外的常數進行比較時,它們的行為有所不同。
is null 的優點
is null 的一個優點是它的能力在比較期間考慮物件的類型。例如:
Test(1); void Test(object o) { if (o is 1) Console.WriteLine("a"); else Console.WriteLine("b"); }
在此範例中,is 運算子允許將 o 與常數 1 進行比較,同時考慮到它們各自的類型。
何時使用is null
通常,在處理除null 以外的常數時,特別是在考慮時, x 為null 是第三個意思類型。對於僅涉及 null 的比較,== null 和 is null 具有相同的目的。
何時使用 == null
== null 仍然是一個可靠的選擇涉及 null 的比較。當不需要考慮物件類型時,通常使用 == null。
更新
Roslyn 編譯器已修改為對齊 == 和 的行為在沒有重載相等運算子的情況下為 null。因此,它們現在都優化為更有效率的 == 行為。但是,如果存在重載的相等運算符,則 is null 和 == null 的行為會有所不同。
以上是C# 中的「x is null」與「x == null」:什麼時候該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!