1

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

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

if (null == myObject)
{

}

而不是:

if (myObject == null)
{

}

我更喜欢第二个陈述,因为它(对我来说)从左到右自然地阅读。

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

4

3 回答 3

13

有些人(主要是 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.

于 2012-06-26T13:32:50.447 回答
2

纯味。他们都将返回完全相同的东西。

于 2012-06-26T13:32:44.427 回答
0

味道纯正,与昏迷、括号等相同。

于 2012-06-26T13:32:31.643 回答