null == object vs object == null

Reb*_*cca 0 c#

可能重复:
将null与对象而不是具有null的对象进行比较有什么问题

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

if (null == myObject)
{

}
Run Code Online (Sandbox Code Playgroud)

而不是:

if (myObject == null)
{

}
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二个陈述,因为它从左到右自然地(对我而言).

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

TJH*_*vel 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.
{

}
Run Code Online (Sandbox Code Playgroud)

然而,正如Jamietre指出的那样,与C语言无关,它在C#中无效地隐式地将int转换为布尔值.编译器仍然会产生错误.然而,当你比较布尔值时它会起作用:if(a == true).然而,这本身就很奇怪,因为你可以(并且在我看来应该)省略== true.

  • C#不会编译任何一个.考虑到这一点,我认为首先将你测试的东西放在C#中更好,因为对于大多数人来说这是一种更自然的方式来阅读代码并且没有风险.(但当然要么完全有效......归结为偏好.) (4认同)