50

考虑

   [Flags]
   public enum State
   {
      IsCool = 0x1,
      SomethingElse = 0x2
   }

我有一个State someState,如果某个表达式的计算结果为真,我想取消设置IsCool标志,someState 无论它已经设置或取消设置。这意味着我不能真正使用someState ^= State.IsCool,但我可以用什么来代替?

4

1 回答 1

105

您需要以与设置标志相反的方式处理此问题:按位与当前状态与要删除的标志的补码。

someState &= ~State.IsCool;
于 2012-06-13T08:35:55.473 回答