哪个是首选:(var == null)或(null == var)

esa*_*sac 4 programming-languages

可能重复:
条件样式:if(0 == resultIndex)vs if(resultIndex == 0)

我已经在代码中看到了这两个,我不知道为什么一个比另一个好,但你更喜欢使用哪个,为什么?

Ant*_*lev 17

if(null == var)做法来自C,在那里你可以不小心写if(var = null)(注意赋值运算符),这将汇编(因为用C一切不为0也是如此),但将是一个语义错误.因此if(null == var)是一种防御性的做法,因为它null是一个左值(再次是C/C++术语)并且左值不能被分配.

在现代语言中(特别是在C#中)编译器会在if语句中进行赋值时发出警告.


Mat*_*rog 8

我会说var == null因为它更像你实际说的."如果我的变量为空......"比任何"如果null是我的变量......"或"如果什么都不是我的变量......"等变体更有意义.