C# C语言中的位赋值运算符#
像C# C语言中的位赋值运算符#,c#,operators,bit-manipulation,C#,Operators,Bit Manipulation,像|=和&=这样的运算符在整数和长整数上用作位运算符 int a = 123; int b = 234; a |= b; Console.WriteLine(a); // outputs 251 但在bool上,这是一个逻辑操作: bool a = true; bool b = false; a |= b; Console.WriteLine(a); // outputs true 当应用于不同的数据类型时,^=、&=和|=运算符如何决定使用哪种操作?编译器根据所涉及表达式的静态类型来决定。
|=
和&=
这样的运算符在整数和长整数上用作位运算符
int a = 123;
int b = 234;
a |= b;
Console.WriteLine(a); // outputs 251
但在bool上,这是一个逻辑操作:
bool a = true;
bool b = false;
a |= b;
Console.WriteLine(a); // outputs true
当应用于不同的数据类型时,
^=
、&=
和|=
运算符如何决定使用哪种操作?编译器根据所涉及表达式的静态类型来决定。泛型的情况如何?像Foo(ta,tb){a |=b;}
@PorkWaffles:您会得到一个编译错误,因为T
不限于保证处理
操作符的接口/类型<代码>“运算符“|=”不能应用于“T”和“T”类型的操作数啊,是的,我理解。谢谢:)但是在bool上,这是一个逻辑操作:
。嗯,是的。但是布尔值是单位的,因此位明智的OR与逻辑OR相同。