在C#中,如果我们有以下代码:
if (condition1 && condition2)
和condition1结果为false,是否仍然检查了condition2,或者只是在if语句之后继续执行?
答案 0 :(得分:3)
首先评估condition1
,然后评估true
,然后评估condition2
。如果condition2
为condition1
,则不会评估false
。这称为short-circuit评估。
答案 1 :(得分:1)
&&
运营商没有短路。但是&
运算符不是,如果使用它,将评估所有表达式。
答案 2 :(得分:1)
是C#对布尔表达式进行短路评估。因此
if(X&& Y())
1)X将首先执行
2)只有当X返回true时才会执行Y
这适用于所有布尔表达式,而不仅仅适用于IF语句中的那些...在MSDN在线提供的C#规范中进行检查。第14.11.1节
你也可以使用&在这种情况下,它不会是一个短期评估,因为
&安培;是用于位操作的“和”运算符。 &安培;&安培;是用于评估逻辑表达式的“和”运算符。