关于.net:(0 ==变量)或(null == obj):C#中的过时实践?

(0 == variable) or (null == obj): An outdated practice in C#?

本问题已经有最佳答案,请猛点这里访问。

完全相同:

Why does one often see"null != variable" instead of"variable != null" in C#?

我已经看到高级开发人员使用标题中提到的语法。
是否需要在.NET中首先指定一个常量? (与C / C世界相反)


不,不需要这样做,因为它试图避免的问题-即

的错字

1
if (variable = 0)

无论如何都不会在C#中编译。 if语句中的条件必须为布尔值。仍然存在犯以下错误之一的风险:

1
2
if (something = true)
if (something = false)

如果something是布尔变量,但是解决此问题的更好方法是避免使用常量:

1
2
if (something)
if (!something)

如果您让开发人员从其他语言中引入这样的习惯用法,而又没有考虑它们是否适合C#,那么您应该留意他们做更多相同的事情。如果尝试像使用C语言(或其他任何语言,几乎是VB.NET的例外)一样编写C#,则最终将编写非惯用的C#代码。

编辑:正如教士指出的那样,还有一个潜在的问题值得关注:

1
2
bool a = false, b = true;
if (a = b) { } // No warnings

所以错误仍然可能发生-但是无论如何我们都无法与常量进行比较:)我想说的是这种情况很少出现,并且花太多时间担心它是不值得的。铅>


在现代世界中不需要这种语法。当我们的C编译器不会警告我们即将发射导弹时,这是我们很多人习惯的。

1
2
3
4
if(status = RED_ALERT)
{
    launchMissiles();
}


我怀疑这是一个剩余的习惯。在C:

1
 if (0 = variable)

将引发编译器错误,而

1
 if (variable = 0)

不会。


C#不需要。但这仍然是一个好主意。

编程与习惯息息相关,您永远不知道何时会发现自己写了一些javascript或更新了您认为早已不复存在的旧程序。