有没有更简单的方法在Flags中编写base 2数字?

时间:2011-03-18 00:05:00

标签: c# enums flags

是否有更简单的方法为枚举标志写入整数值而不必记住每个基数为2的数字(我倾向于在4096之后丢失)?

如果我使用,比方说2*2*2*2,是否会在编译时转换为16,还是会在运行时执行?

2 个答案:

答案 0 :(得分:4)

    public enum Foo
    {
        Bar  = 1 << 0,
        Baz  = 1 << 1,
        Quux  = 1 << 2,
        Etc  = 1 << 3
    }

答案 1 :(得分:4)

您可以使用更直观的十六进制。

Value1 = 0x01,
Value2 = 0x02,
Value3 = 0x04,
...

或使用位移。

Value1 = 1 << 0,
Value2 = 1 << 1,
Value3 = 1 << 2,
....