可能重複:
What is the difference between these (bCondition == NULL) and (NULL==bCondition)?null == x和x == null之間的區別?
我見過的比較這兩種方式。是否存在性能差異或僅僅是個人偏好?
我看到它在這個答案中使用:
What are your favorite extension methods for C#? (codeplex.com/extensionoverflow)
可能重複:
What is the difference between these (bCondition == NULL) and (NULL==bCondition)?null == x和x == null之間的區別?
我見過的比較這兩種方式。是否存在性能差異或僅僅是個人偏好?
我看到它在這個答案中使用:
What are your favorite extension methods for C#? (codeplex.com/extensionoverflow)
在各方面完全相同。做同樣的事情只是一種顛倒的方式。
是否存在性能差異還是僅僅是個人偏好?
不,絕對沒有性能差異。這只是個人喜好的問題。
這是C++時代的雛形,您可能會通過使用=
而不是==
而意外分配變量,它仍然會通過編譯器,因爲您可以將幾乎任何東西都傳遞到C++中進行比較。 不要在C#中使用它,因爲它不會允許你這樣做。
有效C++:
if (p = NULL) // p gets assigned NULL and result is compared to 0
無效C#:
if (p = null) // can only use booleans in test
使用null == x
防止意外地鍵入錯誤和遺漏一等於符號,並且因此分配,而不是測試一個值。你最終將不會編譯null = x
。
在任何情況下,使用Object.ReferenceEquals(x, null)
可能會更好,因爲它可以防止==重載的情況。
有趣的 - ReferenceEquals適用於Nullable類型。但是,在這種情況下,我沒有看到使用它的價值。我還沒有遇到== null的行爲不如預期的情況。 – TrueWill
@TrueWill。我只看到過一個問題,從那時起我就使用了ReferenceEquals()。我不認爲這很普遍,在我看來,它不那麼可讀,這是一個缺點。但我確實找到了一個有問題的人使用的問題== http://stackoverflow.com/questions/155458/c-object-is-not-null-but-myobject-null-still-return-false – iandotkelly
給定操作符超載和愚蠢,可能會打破許多語言習語。我贊成可讀性,簡單性,並盡我的本分來打破破解這一點的代碼。 – TrueWill
好的 - 這真的只是挑剔。但是,我想知道這裏的所有響應者是否只是編寫答案,或者他們是否已經實際編譯代碼並比較得到的IL代碼以確保它是相同的。 :) –
有一篇文章展示了使用null == x而不是x == null的輕微改進。文章在這裏:http://geekswithblogs.net/manishsati/archive/2010/08/31/difference-between-comparisons-null-x-and-xnull.aspx – Xaisoft