我的Enum定义如下:
[Flags]
public enum Number
{
first=1,
second=2,
third=4,
Forth=8,
fifth=16,
six=Number.second|Number.first,
seven=Number.second|Number.first|Number.third
}
我知道可以组合枚举值。
例如:
Number number1 = Number.first;
number1 |= Number.second;
现在,number1相当于Number.six
number1 |=Number.third
现在,number1相当于Number.seven
在此之后,
我希望number1等同于Number.six
现在我的问题是:
是否可以执行反向 OR,使number1仅包含Number.first和Number.second,而不是Number.first,Number.second和Number.third。
我是Flag Enums的新手,不确定是否有可能做到这一点。
答案 0 :(得分:0)
你可以像number1 = number1 & Number.first
那样消除除<{1}}之外的所有其他其他值,如果Number.first
没有number1
,则会获得Number.first
0
1}}。
还要考虑使用number1.HasFlag(Number.first)
,因为它通常比要检查的逻辑操作更具可读性。
答案 1 :(得分:0)
您需要使用&
~
(补充)Number.third
number1 &= ~Number.third;
async