2009-01-08 186 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异常......