Why are there no ||= or &&= operators in C#?

前端 未结 2 789
终归单人心
终归单人心 2020-12-06 08:58

We have equivalent assignment operators for all Logical operators, Shift operators, Additive operators and all Multiplicative operators.

Why did the logical operator

相关标签:
2条回答
  • 2020-12-06 09:37

    Why did the logical operators get left out? Is there a good technical reason why it is hard?

    They didn't. You can do &= or |= or ^= if you want.

    bool b1 = false;
    bool b2 = true;
    b1 |= b2; // means b1 = b1 | b2
    

    The || and && operators do not have a compound form because frankly, they're a bit silly. Under what circumstances would you want to say

    b1 ||= b2;
    b1 &&= b2;
    

    such that the right hand side is not evaluated if the left hand side does not change? It seems like only a few people would actually use this feature, so why put it in?

    For more information about the compound operators, see my serious article here:
    https://docs.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-one

    and the follow-up April-Fools article here:
    https://docs.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-two

    0 讨论(0)
  • 2020-12-06 09:42

    maybe just use

    isAdmin = isAdmin || IsGroupAdmin()
    

    I guess it is partially because a ||= b is kind of confusing because there might be two versions of the implementation: a = a || b, or a = b || a. And they act differently because the right-hand side of the expression is sometimes not evaluated.

    0 讨论(0)
提交回复
热议问题