为什么没有| |=或&&;=C#中的运算符?
所有逻辑运算符、移位运算符、加法运算符和乘法运算符都有等价的赋值运算符 为什么逻辑运算符被遗漏了? 有没有一个很好的技术原因来解释它的困难 为什么逻辑运算符被遗漏了?有没有一个很好的技术原因来解释它的困难 他们没有。如果需要,您可以执行为什么没有| |=或&&;=C#中的运算符?,c#,operators,language-design,assignment-operator,compound-assignment,C#,Operators,Language Design,Assignment Operator,Compound Assignment,所有逻辑运算符、移位运算符、加法运算符和乘法运算符都有等价的赋值运算符 为什么逻辑运算符被遗漏了? 有没有一个很好的技术原因来解释它的困难 为什么逻辑运算符被遗漏了?有没有一个很好的技术原因来解释它的困难 他们没有。如果需要,您可以执行&=或|=或^= bool b1 = false; bool b2 = true; b1 |= b2; // means b1 = b1 | b2 |和&&运算符没有复合形式,因为坦率地说,它们有点傻。在什么情况下你想说 b1 ||= b2; b1 &&
&=
或|=
或^=
bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2
|
和&&
运算符没有复合形式,因为坦率地说,它们有点傻。在什么情况下你想说
b1 ||= b2;
b1 &&= b2;
如果左侧不变,则不会评估右侧?似乎只有少数人会真正使用这个功能,那么为什么要把它放进去呢
有关复合运算符的更多信息,请参阅我的严肃文章:下面是愚人节的后续文章:
也许只是使用
isAdmin = isAdmin || IsGroupAdmin()
我想这部分是因为
a | | b
有点混乱,因为可能有两种版本的实现:a=a | | b
,或者a=b | a
。它们的作用不同,因为表达式的右侧有时不求值。您使用它们的原因是什么?您能提供一个它们有用的示例吗?我以前一直希望短路复合赋值。没有人使用它们,因为它们不存在。另请参见其中给出的一些示例用例。您能否向我公司的一些成员(未透露姓名)解释“只有少数人会使用它,它增加了复杂性,并且有一种现有的方法来实现既定目标”的论点?我试过了,但显然失败了。:)re:“在什么情况下你想说b1 | |=b2;…
”?这些情况:我有一个元素数组,需要测试每个元素的一些条件,所以我循环遍历数组并创建一个排序的“运行总数”:result=TRUE;对于(i..{result&&=a[i];}
,或者我可能希望计算“或”的运行总数。事实上,在我正在进行的一个项目中,我遇到过这样的情况。这很愚蠢吗?我强烈反对愚蠢:)我只是有以下要求:isAdmin |=IsGroupAdmin();isAdmin |=IsCompanyAdmin()
,其中IsGroupAdmin()
和IsCompanyAdmin()
是需要数据库选择的昂贵方法。在这些情况下,我不能使用|=
,显然是出于性能原因,必须使用isAdmin=isAdmin | | |
,而|=
会很有帮助。&&
和|=
绝非愚蠢。当RHS价格昂贵时,它们非常有用。无论是数据库查找、URL获取、正则表达式匹配还是。。。对于这样的操作员,有大量的严重用例。(??=
也属于同一类别-如果为空,则执行此大而昂贵的操作以确定值)。我很难认真对待一个认为这很愚蠢的人。存在a-=b
,没有人会感到困惑,认为可能存在实现a=b-a
而不是a=a-b