我看到一些开发人员在 C# 中使用以下空对象检查:
if (null == myObject)
{
}
而不是:
if (myObject == null)
{
}
我更喜欢第二个陈述,因为它(对我来说)从左到右自然地阅读。
有什么理由为什么会使用第一个?有任何性能优势,还是纯粹的味道?
我看到一些开发人员在 C# 中使用以下空对象检查:
if (null == myObject)
{
}
而不是:
if (myObject == null)
{
}
我更喜欢第二个陈述,因为它(对我来说)从左到右自然地阅读。
有什么理由为什么会使用第一个?有任何性能优势,还是纯粹的味道?
有些人(主要是 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
.
纯味。他们都将返回完全相同的东西。
味道纯正,与昏迷、括号等相同。