关于Enum操作
本文关键字:操作 Enum 关于 | 更新日期: 2023-09-27 18:07:57
我有一个像
这样的enumenum Test
{
A = -2,
B = -1 ,
C = 0 ,
D = 1 ,
E = 2
}
和,如何判断枚举值是否在组合枚举值
中class Program
{
static void Main(string[] args)
{
Test t1 = Test.A | Test.E;
Console.WriteLine((t1 & Test.E) > 0); // true
Console.WriteLine((t1 & Test.A) > 0); // why this is false ?
Console.ReadKey();
}
}
我想问一下,为什么
Test t1 = Test.A | Test.E;
,
Console.WriteLine((t1 & Test.A) > 0);
谢谢…
更新:
谢谢你的评论,和好的设计…
*我想我会尽快改变这个糟糕的设计!!*
*还是谢谢你。(^^ γ)*
要使其工作,必须确保枚举值设置不同的位,因为您正在执行按位和操作。试着这样定义Test
enum Test
{
A = 1,
B = 2,
C = 4,
D = 8,
E = 16
}
或者。
[Flags]
enum Test
{
A = 0x1,
B = 0x2,
C = 0x4,
D = 0x8,
E = 0x10
}
原因是Test.A | Test.E
求值为-2 | 2 = -2
,所以t1 == Test.A
。
现在是t1 & Test.E = -2 & 2 = 2 > 0
和t1 & Test.A = -2 & -2 = -2 < 0