对方法的布尔运算

时间:2012-06-26 16:51:45

标签: c# boolean

  

可能重复:
  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();

确保它只在“失败”之前运行所需的最小量?

3 个答案:

答案 0 :(得分:3)

if (Foo() && Bar())

在这种情况下(逻辑AND),它将首先检查Foo()返回值,并且仅当Bar()返回true时才会Foo()。如果任何条件是假的,那么它将不会检查其他条件,它将从左到右检查条件。

答案 1 :(得分:2)

不,如果Bar()返回false,则不会评估Foo()。这是C#&&运算符的一个功能(不限于if语句):

  

条件AND运算符(&&)执行其bool操作数的逻辑AND,但只在必要时才计算其第二个操作数。

答案 2 :(得分:1)

您正在寻找的是“短路”,是的,.Net支持它。