【发布时间】:2016-03-23 06:25:58
【问题描述】:
我有一个枚举定义如下:
[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
现在我的问题是:
是否可以进行 reverse OR,使 number1 仅包含 Number.first 和 Number.second 而不是 Number.first、Number.second 和 Number.third。
我是 Flag Enums 的新手,不确定这样的事情是否可行。
【问题讨论】:
-
试试
number1 &= ~Number.third- 但我不确定这是否适用于枚举,但我猜是这样。 -
标志枚举与只是枚举没有区别,只是枚举只是整数。
-
感谢“Vera rind”这个作品。
-
这与标志枚举无关。你从不费心去学习布尔算术——这是很多编程的核心。