问题描述
|
对于所有逻辑运算符,Shift运算符,加法运算符和所有乘法运算符,我们都有等效的赋值运算符。
为什么逻辑运算符被排除在外?
是否有困难的良好技术原因?
解决方法
为什么逻辑运算符被排除在外?是否有困难的良好技术原因?
他们没有。您可以根据需要执行
&=
或|=
或^=
。
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
, 也许只是使用
isAdmin = isAdmin || IsGroupAdmin()
我猜这部分是因为a ||= b
有点令人困惑,因为可能有两种版本的实现:a = a || b
或a = b || a
。它们的行为有所不同,因为有时不评估表达式的右侧。