C# c语言中的标志枚举#
我的枚举定义如下:C# c语言中的标志枚举#,c#,enums,C#,Enums,我的枚举定义如下: [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
[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;
现在,数字1等于数字6
number1 |=Number.third
现在,数字1等于数字7
此后,
我想让1号等于6号
number1 |=Number.third
现在我的问题是:
有没有可能对OR进行反向操作,使数字1只包含Number.first和Number.second,而不是Number.first、Number.second和Number.third
我不太熟悉标记枚举,不确定这样做是否可行。你可以像
number1=number1&Number那样做。首先
,这将消除Number以外的所有值。首先
,如果number1
没有Number。首先
它得到0
也考虑使用<代码>编号1. HasFlag(数字第一)因为它通常比要检查的逻辑运算可读性强得多。
你可以像number1=number1&Number那样做。首先
,它会消除数以外的所有值。首先
如果number1
没有数,那么它会得到0
也考虑使用<代码>编号HasFlag(编号:第一)< /C> >因为它比逻辑操作要更可读。
< p>您需要<代码>和<代码>代码< >代码>(补码)<代码>编号。第三< /代码> < /p>
number1 &= ~Number.third;
您需要使用编号的~
(补码)来&
它。第三个
number1 &= ~Number.third;
请尝试number1&=~Number.third
-但我不确定这是否适用于枚举,但我猜是这样的。标志枚举与仅枚举不同,仅枚举只是整数。感谢“Vera rind”,这是有效的。这与标志枚举无关。你从来没有费心学习布尔算术——这是很多编程的核心。试试number1&=~Number.third
——但我不确定这是否适用于枚举,但我猜是这样。标志枚举和仅仅枚举没有什么不同,仅仅枚举就是整数。谢谢“Vera rind”,这是有效的。这与标志枚举无关。你从来没有费心学习布尔算术——这是很多编程的核心。在评论中已经回答了“Vera rind”的问题,在评论中已经回答了“Vera rind”