我们为所有逻辑运算符,Shift运算符,Additive运算符和所有Multiplicative运算符都有等效的赋值运算符。
为什么逻辑运算符被遗漏了? 是否存在很难的技术原因?
答案 0 :(得分:48)
为什么逻辑运算符被遗漏了?是否存在很难的技术原因?
他们没有。如果需要,您可以&=
或|=
或^=
。
bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2
||
和&&
运算符没有复合形式,因为坦率地说,它们有点傻。在什么情况下你想说?
b1 ||= b2;
b1 &&= b2;
如果左侧不改变,则不评估右侧?似乎只有少数人会真正使用这个功能,为什么要把它放进去?
有关复合运算符的更多信息,请参阅我的严肃文章:
http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx
以及后续的愚人节文章:
http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx
答案 1 :(得分:1)
也许只是使用
isAdmin = isAdmin || IsGroupAdmin()
我想部分原因是a ||= b
有点令人困惑,因为实现可能有两个版本:a = a || b
或a = b || a
。而且它们的行为有所不同,因为有时不评估表达式的右侧。