取消设置枚举标志

本文关键字:标志 枚举 设置 取消 | 更新日期: 2023-09-27 18:36:56

>考虑

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

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

取消设置枚举标志

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

someState &= ~State.IsCool;