c#中的标志枚举

时间:2016-03-23 06:25:59

标签: c# enums

我的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的新手,不确定是否有可能做到这一点。

2 个答案:

答案 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
相关问题