C#如果= = false,为什么要执行& = SomeFunction()?

时间:2016-05-19 15:15:09

标签: c# boolean-logic boolean-operations

我们说你有

class Program
{
    static void Main()
    {
        bool a = GetFalse();
        if (a)
        {
            a = GetTrue();
        }

        bool b = GetFalse();
        b &= GetTrue();
    }

    static bool GetFalse() => (false);

    static bool GetTrue() => (true);
}

为什么GetTrue()已经假,b会被执行?

&=运营商是否应该认识到它永远无法评估为真?

1 个答案:

答案 0 :(得分:5)

因为x &= y只是x = x & y的简写。 &不是短路,因此无论y的值是什么,x都会被评估,即使对于bools也是如此。

对于bool,具体来说, &&&的短路版本。但是,没有&&=运算符,因此您需要单独执行此操作:

b = b && GetTrue();