我们大多数人写的条件如下:
if (resultIndex == 0)
......但偶尔我会遇到像他们一样的人:
if (0 == resultIndex)
......有趣的是,这些人都是作家,而且看起来非常热门的编码员。
那么为什么有些人选择'倒退'风格?背后有一些历史吗? Readabililty?
重复:Why does one often see “null != variable” instead of “variable != null” in C#?。
答案 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)
尝试将某些内容分配给常量时,会出现编译错误。
在我看来,这在编程风格方面有更多,但对于新程序员来说仍然是一个很好的提示。但是一旦你有点经验,这样的错误就不会发生,如果他们这样做,你应该能够很容易地追踪它们。