10

我正在阅读一些第 3 方代码,我发现了这个:

x.Flags = x.Flags ^ Flags.Hidden;

它有什么作用?

我用过'&'和'|' 对于带有枚举的按位“和”和“或”,但这是我第一次看到那个符号......

4

4 回答 4

22

^ 是 C# 中的按位异或运算符。

编辑:如果 a 为真且 b 为假,或者 a 为假且 b 为真,则 a ^ b 返回真,但不是两者兼而有之。

于 2008-10-24T18:37:07.647 回答
16

那将是“异或”运算符。在您的示例代码中,它将根据 x.Flags 的当前值打开或关闭 Flags.Hidden。

这样做的好处是它允许您更改 Flags.Hidden 的设置,而不会影响已设置的任何其他标志。

于 2008-10-24T18:40:31.183 回答
2

取自这里

对于整数类型,^ 计算其操作数的按位异或。对于 bool 操作数,^ 计算其操作数的逻辑异或;也就是说,当且仅当奇数个操作数为真时,结果才为真。

于 2008-10-24T18:37:57.707 回答
2

这是异或(XOR)运算符,此链接有示例用法

http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor-and-amp-amp-not.aspx

于 2008-10-24T18:38:31.513 回答