“|=”运算符在 C# 中有什么作用?

What does the "|=" operator do in C#?

我最近遇到了一些我不完全理解的代码。下面是此代码的基本表示:

bool flag = false;
flag |= someFunction();

在此示例中,someFunction() 是 returns 一个 bool 值的函数。我的问题是,|= 运算符是做什么的?

我没有在网络上或该社区中找到很多关于 |= 的信息。我了解使用 = 运算符的基本赋值操作,使用 == 运算符或其他变体的比较操作,但我以前从未见过 |= 在赋值中使用过。

我也知道 | 运算符用于按位包含 OR 比较。但是,将其用作作业的一部分对我来说没有意义。在 sudo 代码中,上面的代码似乎在说 "If the result of a bitwise inclusive OR between "flag" 并且 someFunction() 结果为真值,将真值分配给标志。否则,将假值分配给标志。"当然,如果标志或 someFunction() stored/returned 为真值,则结果将为真(基于按位包含或的工作方式)。

这是正确的解释吗?如果那是 |= 的工作方式,因为我知道 "flag" 是假的,使用 |= 运算符而不是简单的 = 赋值运算符真的有意义吗这个场景?

提前致谢。

你说得对 = 在你的情况下会产生同样的效果。

一般情况下,如果有几个这样的条件,第一个可能会用|=只是为了保持一致性,但在这里没有技术优势。

flag |= someFunction() 等同于 flag = flag | someFunction();
这是 OR 赋值运算符。

详情请见MSDN