关于Enum操作

本文关键字:操作 Enum 关于 | 更新日期: 2023-09-27 18:07:57

我有一个像

这样的enum
enum 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);

谢谢…

更新:

谢谢你的评论,和好的设计…

*我想我会尽快改变这个糟糕的设计!!*

*还是谢谢你。(^^ γ)*

关于Enum操作

要使其工作,必须确保枚举值设置不同的位,因为您正在执行按位和操作。试着这样定义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 > 0t1 & Test.A = -2 & -2 = -2 < 0