我对通过更改if
语句中条件的顺序的优化机会感到好奇。
给出下面的示例,如果x
为假,则if
语句将尝试执行其他两个条件。如果没有,我是否应该将它们包括在if
分支中。它们也以什么顺序执行。是从左到右还是从右到左?
if (x && y && z)
{
// ...
}
答案 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。 供参考检查: