完全重复:
我见过高级开发人员使用标题中提到的语法。
在.NET中是否需要首先指定常量?(与C / C ++世界相反)
我见过高级开发人员使用标题中提到的语法。
在.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#代码。
编辑:正如cletus所指出的,还有一个潜在的关注点:
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或更新你认为早已消失的旧程序。