null == object vs object == null

时间:2012-06-26 13:31:35

标签: c#

  

可能重复:
  What is wrong in comparing a null with an object rather than an object with a null
  

我看到一些开发人员在C#中使用以下空对象检查:

if (null == myObject)
{

}

而不是:

if (myObject == null)
{

}

我更喜欢第二种说法,因为它从左到右自然地(对我而言)。

有没有理由说明为什么使用第一个?有任何性能优势,还是纯粹的味道?

3 个答案:

答案 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)

纯正的味道,与逗号,括号等相同。