在C#中,'| ='做什么?

nas*_*ski 4 c# operators

我似乎无法谷歌 - 似乎不喜欢搜索字符串中的语法.感谢您的帮助.

Jar*_*Par 15

这是一个明智的任务.它大致是以下的简写

x |= y;
x = x | y;
Run Code Online (Sandbox Code Playgroud)

注意:这不是真正的上述原因,因为C#规范保证x只发生一次的副作用.因此,如果x是一个复杂的表达式,编译器会生成一些有趣的代码,以确保副作用只发生一次.

Method().x |= y;
Method().x = Method().x | y;  // Not equivalent

var temp = Method();
temp.x = temp.x | y;  // Pretty close
Run Code Online (Sandbox Code Playgroud)

  • @Servy考虑更有趣:`(等待x).SomeMethod().y | = z;`或者我个人最喜欢的`(等待x)[等待y] .z + = await a;` (3认同)

Ry-*_*Ry- 5

该表达式a |= b相当于赋值a = a | b,其中|是按位 OR 运算符。*

* 不完全,但足够接近大多数用途。