Dupe:Null Difference
一生以前,我遇到过一篇文章,解释说以下内容并不相同(在c#中):
if (o == null) {}
if (null == o) {}
文章解释说后者是首选,因为它导致更准确的测试。从那时起我一直在编码。现在,我了解了更多,我正在寻找这篇文章,或者其他类似的文章,看看确切的结果是什么,但我找不到任何关于这个主题的内容。
思考?有区别吗?乍一看会说不。但谁知道IL和C#汇编的内容会发生什么。
答案 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 ...