你有同一个整数的多个枚举值吗?

.NET中,您可以为同一个整数设置多个enum值吗?

例如。

 public enum PersonGender { Unknown = 0, Male = 1, Female = 2, Intersex = 3, Indeterminate = 3, NonStated = 9, InadequatelyDescribed = 9 } 

在C#中,根据C#语言规范 ,版本4允许这样做。

1.10 Enums1.10 Enums没有提到可能性,但是在第14 Enums14 Enums ,我们看到(在14.3 ):


多个枚举成员可以共享相同的关联值。 这个例子

 enum Color { Red, Green, Blue, Max = Blue } 

显示一个枚举,其中两个枚举成员 – BlueMax – 具有相同的关联值。

这很好。 您发布的代码绝对没有错。 它编译得很好并且在代码中工作,需要注意的是

 PersonGender.NonStated == PersonGender.InadequatelyDescribed 

我发现这个StackOverflowpost与这个问题有关。 我认为这是如何工作的非常明智的讨论。 非唯一枚举值

现在,我可能还会补充一点,我认为这将是一个含糊不清(因此也是不正确的)枚举的用法。 编写对于阅读它的其他人有意义的代码很重要,在这种情况下,我会被这个枚举推迟。

我建议枚举在你的上下文中使用是不对的,你可以使用创建一个可以解决你的目的的类和方法。 你class上有类似的东西: –

 class A { static readonly ABCD= new Dictionary { { 1, "X" }, { 2, "X" }, { 3, "Y" } { 4, "Y" } } }