可能重复:
What is wrong in comparing a null with an object rather than an object with a null
我看到一些开发人员在C#中使用以下空对象检查:
if (null == myObject)
{
}
而不是:
if (myObject == null)
{
}
我更喜欢第二种说法,因为它从左到右自然地(对我而言)。
有没有理由说明为什么使用第一个?有任何性能优势,还是纯粹的味道?
答案 0 :(得分:11)
有些人(主要是C开发人员)更喜欢第一种方式,因为如果忘记一个=
符号,代码就不会在C中编译。
例如,当我忘记一个=
;
int a = 0;
if(a=1) //Accidental assignment, luckily the C# compiler warns us for this. The C compiler wouldnt.
{
}
if(1=a) // This is not logical, and not valid in either C# or C.
{
}
然而,正如Jamietre指出的那样,与C语言不同,它在C#中无效地隐式地将int转换为布尔值。编译器仍然会产生错误。然而,当您比较布尔值时,它会起作用:if(a == true)
。然而,这本身就很奇怪,因为你可以(并且应该在我看来)省略== true
。
答案 1 :(得分:2)
答案 2 :(得分:0)
纯正的味道,与逗号,括号等相同。