检查null,哪个更好? “null ==”或“== null”

时间:2009-01-08 16:09:32

标签: c# .net null

Dupe:Null Difference

一生以前,我遇到过一篇文章,解释说以下内容并不相同(在c#中):

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

文章解释说后者是首选,因为它导致更准确的测试。从那时起我一直在编码。现在,我了解了更多,我正在寻找这篇文章,或者其他类似的文章,看看确切的结果是什么,但我找不到任何关于这个主题的内容。

思考?有区别吗?乍一看会说不。但谁知道IL和C#汇编的内容会发生什么。

5 个答案:

答案 0 :(得分:9)

禁止您输入if (o = null)是一种习惯。 if(null = o)是语法错误。在C#中有点毫无意义,因为空值不会被强制转换为布尔值。

答案 1 :(得分:3)

后者是C / C ++日的延续,可能会意外地分配值而不是比较。 C#不允许你这样做,所以要么/或者可以接受(但我觉得前者更可读)。

答案 2 :(得分:2)

在c#中没有区别。来自C / C ++开发人员的习惯是避免常见的错误,这是正确的语法:

if(o = null)

在C#中无法编译,但在C和C ++中,它会留下一个非常讨厌的错误。因此,很多人习惯了

if(null == o)

答案 3 :(得分:0)

与C#无关,这是来自C.请参阅this question进行讨论。

答案 4 :(得分:0)

我使用Java ..我确实习惯在LHS上使用常量来进行所有交换比较。

"name".equals(name)

 null == obj

"55".compareTo(numString)

等。只需避免不必要的NullPointerExceptions ...