是否可以使枚举自动生成其值

时间:2011-04-28 10:24:26

标签: c# enums

来自MSDN上的this sample

[Flags] 
public enum Pet {
   None = 0,
   Dog = 1,
   Cat = 2,
   Bird = 4,
   Rabbit = 8,
   Other = 16
}

有没有让enum自动生成其值?

3 个答案:

答案 0 :(得分:6)

假设你真的想要一个“标志”枚举,那么就没有自动化的方法,不行。 Pet示例似乎不适合标记,但我认为这只是一个不幸的选择。减少错误轻微的可能性的一个选项是使用位操作:

[Flags] 
public enum Pet {
   None = 0,
   Dog = 1 << 0,
   Cat = 1 << 1,
   Bird = 1 << 2,
   Rabbit = 1 << 3,
   Other = 1 << 4
}

如果一切都使用了位移,你知道你不会意外地得到一个实际上是多位的值。

答案 1 :(得分:0)

只是不要输入等号和值。

例如,

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

是MSDN网站上的一个示例(http://msdn.microsoft.com/en-us/library/sbbt4032(v=vs.80).aspx

答案 2 :(得分:0)

是的,请离开他们:

public enum Pet {
   None,
   Dog,
   Cat,
   Bird,
   Rabbit,
   Other
}

但是这样你不应该使用flags属性修饰枚举,因为这些值不能以有意义的方式组合。