取消枚举枚举标志

时间:2012-06-13 08:33:39

标签: c#

考虑

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

我有一个State someState,如果某个表达式的计算结果为true,我想取消IsCool someState标记,无论是否已设置或未设置。这意味着我无法真正使用someState ^= State.IsCool,但我可以使用什么呢?

1 个答案:

答案 0 :(得分:84)

您需要以与设置标志时相反的方式接近此方法:按位和当前状态以及要删除的标志的补码。

someState &= ~State.IsCool;