2009-01-08 134 views
2

杜佩:Null Difference檢查null,哪個更好? 「空==」 或 「== NULL」

終身前,我跨解釋說,以下是不相等的論文是(在C#):

if (o == null) {} 
if (null == o) {} 

文章解釋說後者是首選,因爲它導致了更準確的測試。自那以後,我一直在編碼。現在我明白了更多的東西,我正在尋找這篇文章或其他類似文章,看看究竟是什麼,但是我無法找到關於這個主題的任何內容。

想法?有區別嗎?第一眼就會說不。但是誰知道在IL和C#彙編中會發生什麼。

+1

回覆:「但誰知道在IL和C#編寫的腸子會發生什麼。」 - 任何人都有副本的反射器? – GEOCHET 2009-01-08 16:18:45

+0

;)我認爲這是爲了當一個人想看看他們是如何從代碼的角度來看... 我看到沒有差異,我甚至做過性能測試,沒有差異。這就是我問的原因。 我更喜歡if(o == null)..它對我來說更具可讀性。現在,我可以再次使用它。 :) – 2009-01-08 16:26:19

回答

9

這是一種古老的習慣,可以防止您輸入if (o = null)。如果(null = o)是語法錯誤。在C#中毫無意義,因爲空值不會被強制轉換爲布爾值。

2

在c#中沒有區別。這是從C/C++開發人員的老習慣,以避免常見的臭蟲,這是正確的語法:

if(o = null) 

在C#中,不會編譯,但在C和C++中,它會留下你一個非常討厭的錯誤。因此,很多人習慣了做

if(null == o) 
3

後者是從C/C++天,其中有可能意外地分配一個值,而不是比較緩繳。 C#不會允許你這樣做,所以無論是/還是可以接受的(但我發現前者更具可讀性)。

0

我與Java一起工作..我確實有LHS常量用於所有交換比較的習慣。

"name".equals(name) 

null == obj 

"55".compareTo(numString) 

etc..Just避免不必要的NullPointerException異常......