这两个if语句是否相同?

时间:2012-10-16 01:19:11

标签: c# if-statement refactoring

1)

if (((w || x) || y) || z)

2)

if (w || x || y || z)

我在很多我正在研究的代码中看到第一个,我想知道我是否可以将它简化为第二个。

2 个答案:

答案 0 :(得分:7)

是的,这两个陈述是等价的。

7.2.1 Operator precedence and associativity

  

当操作数出现在两个具有相同优先级的运算符之间时,运算符的关联性控制着执行操作的顺序:

     
      
  • 除赋值运算符外,所有二元运算符都是左关联运算符,这意味着操作从左到右执行。例如,x + y + z被评估为(x + y)+ z。
  •   

答案 1 :(得分:0)

简而言之,在第一个语句中,您正在检查w,x,y或z中是否有任何一个为真。因此,第二个陈述实际上等同于第一个陈述。