考虑
[Flags]
public enum State
{
IsCool = 0x1,
SomethingElse = 0x2
}
我有一个State someState
,如果某个表达式的计算结果为true,我想取消IsCool
的someState
标记,无论是否已设置或未设置。这意味着我无法真正使用someState ^= State.IsCool
,但我可以使用什么呢?
答案 0 :(得分:84)
您需要以与设置标志时相反的方式接近此方法:按位和当前状态以及要删除的标志的补码。
someState &= ~State.IsCool;