可能重复:
Does the compiler continue evaluating an expression where all must be true if the first is false?
Difference between eager operation and short-circuit operation? (| versu || and & versu &&)
所以这是我的问题。如果我有这个
if (Foo() && Bar())
DoStuff();
如果Foo()返回false,它仍然会通过Bar()运行吗?或者我需要
if (Foo())
if (Bar())
DoStuff();
确保它只在“失败”之前运行所需的最小量?
答案 0 :(得分:3)
if (Foo() && Bar())
在这种情况下(逻辑AND),它将首先检查Foo()
返回值,并且仅当Bar()
返回true时才会Foo()
。如果任何条件是假的,那么它将不会检查其他条件,它将从左到右检查条件。
答案 1 :(得分:2)
不,如果Bar()
返回false,则不会评估Foo()
。这是C#&&
运算符的一个功能(不限于if
语句):
条件AND运算符(&&)执行其bool操作数的逻辑AND,但只在必要时才计算其第二个操作数。
答案 2 :(得分:1)
您正在寻找的是“短路”,是的,.Net支持它。