(0 ==变量)或(null == obj):C#中过时的练习?
完全重复:
为什么在C#中经常会看到“null!= variable”而不是“variable!= null”?
我见过高级开发人员使用标题中提到的语法。
是否需要在.NET中指定常量? (与C / C ++世界相反)
不,没有必要这样做,因为它试图避免的问题 – 即错误:
if (variable = 0)
无论如何都不会在C#中编译。 if
语句中的条件必须是布尔值。 仍有发生以下错误之一的风险:
if (something = true) if (something = false)
如果something
是布尔变量,但更好的解决方法是避免常量:
if (something) if (!something)
如果你让开发人员从其他语言中提取这样的习语而不考虑它们是否适合C#,你应该留意他们做更多相同的事情。 如果您尝试编写C#,就好像它是C ++(或任何其他语言,几乎 – 除了VB.NET),您最终将编写非惯用的C#代码。
编辑:正如克莱图斯指出的那样,还有另一个值得关注的领域:
bool a = false, b = true; if (a = b) { } // No warnings
所以错误仍然可能发生 – 但是我们不管怎么说,我们已经超出了与常数进行比较的范围:)我会说这种情况非常罕见,并且不值得花费太多时间来担心它。
在现代世界中不需要这种语法。 当我们的C编译器不会警告我们我们即将发射导弹时,我们很多人都习惯了这种习惯。
if(status = RED_ALERT) { launchMissiles(); }
我怀疑这是一个遗留的习惯。 在C:
if (0 = variable)
将抛出编译器错误而
if (variable = 0)
将不会。
C#不需要它。 但这仍然是一个好主意。
编程完全是关于习惯的,你永远不知道什么时候你会发现自己写一些javascript或更新你认为早已不复存在的旧程序。