C#中的 |= 操作符是什么作用?

3

我在浏览《C# 4.0 快速参考》中的代码示例时,发现了一些与枚举相关的有趣操作符。

[Flags]
public enum BorderSides { Left=1, Right=2, Top=4, Bottom=8 }

...
BorderSides leftRight = BorderSides.Left | BorderSides.Right;
...

BorderSides s = BorderSides.Left;
s |= BorderSides.Right;
...

s ^= BorderSides.Right; 

这个在其他地方有文档记录吗?

更新

找到了一个与此相关的论坛帖子

3个回答

8

|= 是按位或赋值。

这个语句:

BorderSides s = BorderSides.Left;
s |= BorderSides.Right;

是相同的。
BorderSides s = BorderSides.Left;
s = s | BorderSides.Right;

这通常在枚举中用作标志,以便能够将多个值存储在单个值中,例如32位整数(C#中enum的默认大小)。

它类似于+=运算符,但不是执行加法,而是执行按位或操作。


3

0

为什么不混淆?它也适用于布尔值。它的作用取决于参数,在这两种情况下,a |= b等同于a = a | b。 - greenoldman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接