你可以有多个枚举值相同的整数? [重复](Can you have multiple enum

2019-07-21 19:26发布

这个问题已经在这里有一个答案:

  • 非唯一枚举值 6个回答

.NET可以有多个enum为同整数值?

例如。

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

Answer 1:

在C#,这是允许的,因为每C#语言Specication ,第4版。

1.10 Enums没有提到的可能性,但后来在第14 Enums ,我们看到(在14.3 ):


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

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

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



Answer 2:

这工作正常。 我们绝对没有错,你发布的代码。 它编译就好和代码工作,需要提醒的是

PersonGender.NonStated == PersonGender.InadequatelyDescribed


Answer 3:

我发现与此相关的问题,这个StackOverflow的职位。 我认为这是如何工作非常明智的讨论。 非唯一枚举值

现在,我也想补充一点,这是我认为这将是一个不明确(因此不正确的)使用枚举。 它编写的代码,是有道理的给别人阅读它是很重要的,在这种情况下,我会通过此枚举被推迟。



Answer 4:

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

class A
{

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


文章来源: Can you have multiple enum values for the same integer? [duplicate]
标签: c# .net enums clr