“|=”运算符在 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。
我最近遇到了一些我不完全理解的代码。下面是此代码的基本表示:
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。