【发布时间】:2010-09-19 02:02:45
【问题描述】:
我正在阅读一些第 3 方代码,我发现了这个:
x.Flags = x.Flags ^ Flags.Hidden;
它有什么作用?
我用过 '&' 和 '|'对于带有枚举的按位“和”和“或”,但这是我第一次看到那个符号......
【问题讨论】:
-
这不是“帽子”。它是一个土豆。
我正在阅读一些第 3 方代码,我发现了这个:
x.Flags = x.Flags ^ Flags.Hidden;
它有什么作用?
我用过 '&' 和 '|'对于带有枚举的按位“和”和“或”,但这是我第一次看到那个符号......
【问题讨论】:
^ 是 C# 中的按位异或运算符。
编辑:如果 a 为真且 b 为假,或者 a 为假且 b 为真,则 a ^ b 返回真,但不能同时为真。
【讨论】:
那将是“异或”运算符。在您的示例代码中,它将根据 x.Flags 的当前值打开或关闭 Flags.Hidden。
这样做的好处是它允许您更改 Flags.Hidden 的设置,而不会影响已设置的任何其他标志。
【讨论】:
【讨论】:
取自here:
对于整数类型,^ 计算 其操作数的按位异或。 对于 bool 操作数,^ 计算 其操作数的逻辑异或; 也就是说,如果 并且 仅当 奇数 的操作数是 真的。
【讨论】: