条件样式:if(0 == resultIndex)vs if(resultIndex == 0)

时间:2009-05-21 10:37:35

标签: c#

我们大多数人写的条件如下:

if (resultIndex == 0)

......但偶尔我会遇到像他们一样的人:

if (0 == resultIndex)

......有趣的是,这些人都是作家,而且看起来非常热门的编码员。

那么为什么有些人选择'倒退'风格?背后有一些历史吗? Readabililty?


重复:Why does one often see “null != variable” instead of “variable != null” in C#?

5 个答案:

答案 0 :(得分:7)

这是来自C的遗产,其中常见的错误是编写

if (x = 0) {...}

如果您自学编写这些测试,那么编译器会在您输入==错字时抱怨,而不是默默地添加错误。

答案 1 :(得分:6)

之前已经多次询问过,但我似乎无法找到Dup。

基本上,这种风格是来自C的宿醉,这是

的常见错误
if (c == 5) //Comparison

if (c = 5) //Assignment

在后一种情况下,编译不会抱怨所以人们这么写就是为了减少这种情况发生的可能性

if (5 == c) 

答案 2 :(得分:2)

因为(在C中,大多数程序员可能已经学习过;我不记得这是否在C#中存在)如果你以“常规”方式留下=字符,你将覆盖您要比较的值(并且您将检查赋值的布尔值)。如果以“向后”方式执行此操作,则会出现编译器错误。

答案 3 :(得分:1)

在C#中,整数值不会隐式转换为布尔值,因此if (a = 0)会产生编译器错误并且不会编译。因此,这种做法在C#中已经过时且完全不必要。

答案 4 :(得分:0)

我认为这背后的主要原因是为了防止错误,例如:

if (variable = 0)

您在条件中分配而不是比较。 之所以会出现相反的原因,是因为表达式的左侧有一个常量。

所以,如果你错误地写道:

if (0 = variable)

尝试将某些内容分配给常量时,会出现编译错误。

在我看来,这在编程风格方面有更多,但对于新程序员来说仍然是一个很好的提示。但是一旦你有点经验,这样的错误就不会发生,如果他们这样做,你应该能够很容易地追踪它们。