条件之一为假时,if语句是否立即返回

时间:2019-08-17 23:35:29

标签: c# if-statement

我对通过更改if语句中条件的顺序的优化机会感到好奇。

给出下面的示例,如果x为假,则if语句将尝试执行其他两个条件。如果没有,我是否应该将它们包括在if分支中。它们也以什么顺序执行。是从左到右还是从右到左?

if (x && y && z)
{
   // ...
}

2 个答案:

答案 0 :(得分:2)

检查从左到右进行-如果X为假,则if语句将立即返回。

例如,考虑使用null检查的代码。你会写

if(list != null && list.count > 10) {
// do something
}

但不是

if(list.count > 10 && list != null) {
// the null check here does not help you
}

答案 1 :(得分:2)

在c#中,

if(X&y&z){} 使用逻辑运算符 &始终会评估所有语句。 相反,如果对条件逻辑AND使用条件逻辑运算符 &&,对于条件逻辑OR使用||,则语句从左到右评估,而右手语句仅评估如有必要。

if (x & y) {}

总是计算x和y,而

if (x && y) {}

如果x为假,则仅求y。 供参考检查:

Microsoft .NET documentation on Boolean logical operators