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

标签 c# operators language-design assignment-operator compound-assignment

我们为所有逻辑运算符、移位运算符、加法运算符和所有乘法运算符提供等效的赋值运算符。

为什么逻辑运算符被排除在外? 是否有充分的技术原因说明它很难?

最佳答案

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

他们没有。如果需要,您可以执行 &=|=^=

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

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

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

如果左侧不变,则右侧不会被评估?似乎只有少数人真正会使用这个功能,为什么要放它呢?

有关复合运算符的更多信息,请参阅我的严肃文章:
https://learn.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-one

以及此处的后续愚人节文章:
https://learn.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-two

关于c# - 为什么 C# 中没有 ||= 或 &&= 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346001/

相关文章:

c# - Linq 表达式嵌套属性,与字符串比较

c++ - std::sort 和 std::unique 结构问题

pointers - 我可以在 julia 中定义指针吗?

c++ - 为什么允许 T() = T()?

language-agnostic - 当速记列表和方法签名覆盖可用时用于变量 args 语法

c# - 如何使用 c#.net 将基类的实例复制到派生类基

c# - 如何更新 WPF MainWindow 上的控件

c# - 如果查询未返回任何内容,linq 选择项的默认值

php - PHP 中的 =& 是什么?

haskell - 在 Haskell 中定义自定义运算符的关联性