C#中的按位赋值运算符

Por*_*les 3 c# bit-manipulation operators

运营商喜欢|=&=在整体和长期运营中作为按位运算符...

int a = 123;
int b = 234;
a |= b;
Console.WriteLine(a); // outputs 251
Run Code Online (Sandbox Code Playgroud)

但是在bool上,这是一个合乎逻辑的操作:

bool a = true;
bool b = false;
a |= b;
Console.WriteLine(a); // outputs true
Run Code Online (Sandbox Code Playgroud)

如何做^=,&=以及|=运营商决定何时被应用到不同的数据类型使用哪种操作?

Oli*_*rth 5

编译器根据所涉及的表达式的静态类型决定.

  • @PorkWaffles:你会得到一个编译错误,因为`T`不限于保证处理`|`运算符的接口/类型.`"运算符'| ='不能应用于'T'和'T'类型的操作数" (2认同)