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

时间:2013-03-17 06:16:22

标签: c# .net enums clr

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

例如

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

4 个答案:

答案 0 :(得分:12)

在C#中,根据C# Language Specication版本4,允许这样做。

1.10 Enums部分未提及可能性,但稍后在14 Enums部分中,我们看到(在14.3中):


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

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

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

答案 1 :(得分:3)

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

PersonGender.NonStated == PersonGender.InadequatelyDescribed

答案 2 :(得分:2)

我发现此StackOverflow帖子与此问题有关。我认为这是如何工作的非常明智的讨论。 Non-unique enum values

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

答案 3 :(得分:1)

我建议在您的上下文中使用枚举不是正确的选择,而是可以使用创建可以解决您的目的的类和方法。你班上有这样的事情: -

class A
{

    static readonly ABCD= new Dictionary<int,string>
        {
            { 1, "X" },
            { 2, "X" },
            { 3, "Y" }
            { 4, "Y" }
        }
}