在回顾一些代码时,我看到:
if (null == condition) { ... }
我也看到了:
if (condition == null) { ... }
我似乎记得null
在左侧有一个优势,但是我记不住它了,并且认为它是一个较旧的运行时项目,它已经被更新的.NET运行时优化了.我倾向于使用后者的无效检查,所以前者引起了我的注意.
那么这是一种风格问题,还是null
在评估的左侧或右侧有优势?
C风格语言的经典原因是防止错误输入==
作为赋值的相等性=
.你不能分配一个常量 - 即以下是非法的,因此编译器将捕获该错误:
if (false = condition) { ... }
虽然这是完全合法的(但可能不是作者的意图:
if (condition = false) { ... }
注意:这个问题在C#中有限(与vanilla C相比),因为if
语句需要bool(如下面的注释中所述),所以这实际上导致问题的唯一情况是你的类型是a bool
.