相关疑难解决方法(0)

C#中的| =和&=赋值运算符短路

我知道,||&&在C#中被定义为短路运营商,这种行为是由语言规范保证,但做|=&=短路呢?

例如:

private bool IsEven(int n)
{
    return n % 2 == 0;
}

private void Main()
{
    var numbers = new int[] { 2, 4, 6, 8, 9, 10, 14, 16, 17, 18, 20 };

    bool allEven = true;
    bool anyOdd = false;

    for (int i = 0; i < numbers.Length; i++)
    {
        allEven &= IsEven(numbers[i]);
        anyOdd |= !IsEven(numbers[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

当9条目被命中时,allEven变为false,这意味着所有后续条目都是无关紧要的 - allEven对于将来对该表达式的所有调用,该值保证为false.同样如此anyOdd,当它看到9时设置为true,并且对于该表达式的所有后续调用将保持为true.

那么,做&= …

c# short-circuiting

22
推荐指数
4
解决办法
5187
查看次数

标签 统计

c# ×1

short-circuiting ×1