鉴于枚举:
[Flags]
enum foo
{
a = 1,
b = 2,
c = 4
}
然后
foo example = a | b;
如果我不知道foo是否包含c
,我以前写过以下内容
if (example & foo.c == foo.c)
example = example ^ foo.c;
有没有办法在不检查foo.c
中example
的存在的情况下执行此操作?
就添加内容而言,我可以执行 OR
,如果example
中已经存在枚举值,则无关紧要。
答案 0 :(得分:22)
我想你想要:
example &= ~foo.c;
换句话说,对每个位执行一个按位“AND”掩码,除了 c
的那个。
编辑:我应该在某个时候向Unconstrained Melody添加“除外”,所以你可以这样写:
example = example.Except(foo.c);
让我知道你是否对此感兴趣,我会看到周末我能做些什么......
答案 1 :(得分:8)
它与foo.c的补充:
example = example & ~foo.c