首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么C#中没有||=或&&=运算符?

为什么C#中没有||=或&&=运算符?
EN

Stack Overflow用户
提问于 2011-06-14 23:23:09
回答 2查看 13.1K关注 0票数 68

对于所有逻辑运算符、移位运算符、加法运算符和所有乘法运算符,我们都有等价的赋值运算符。

为什么逻辑运算符被遗漏了?为什么它很难,有没有很好的技术原因?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-14 23:43:31

为什么省略了逻辑运算符?为什么它很难,有没有很好的技术原因?

他们没有。如果您愿意,您可以使用&=|=^=

代码语言:javascript
复制
bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2

||&&运算符没有复合形式,因为老实说,它们有点傻。在什么情况下你想说

代码语言:javascript
复制
b1 ||= b2;
b1 &&= b2;

这样,如果左边没有改变,右边就不会被计算?似乎只有很少的人会真正使用这个功能,那么为什么要把它放进去呢?

有关复合运算符的更多信息,请参阅我的严肃文章:

https://docs.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-one

和后续的四月愚人节文章在这里:

https://docs.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-two

票数 53
EN

Stack Overflow用户

发布于 2019-08-09 10:16:16

也许只需要使用

代码语言:javascript
复制
isAdmin = isAdmin || IsGroupAdmin()

我猜部分原因是因为a ||= b有点混乱,因为可能有两个版本的实现:a = a || ba = b || a。它们的行为也不同,因为有时不会计算表达式的右侧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6346001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档