10

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

例如。

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

4 回答 4

18

在 C# 中,这是允许的,根据C# 语言规范,版本 4。部分1.10 Enums没有明确提到这种可能性,但是,稍后在部分中14 Enums, 14.3,我们看到:

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

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

显示enum其中两个enum成员 -BlueMax- 具有相同的关联值。

于 2013-03-17T06:39:26.607 回答
4

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

PersonGender.NonStated == PersonGender.InadequatelyDescribed
于 2013-03-17T06:19:09.627 回答
2

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

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

于 2013-03-17T06:36:16.063 回答
-1

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

class A
{

    static readonly ABCD= new Dictionary<int,string>
        {
            { 1, "X" },
            { 2, "X" },
            { 3, "Y" }
            { 4, "Y" }
        }
}
于 2013-03-17T06:26:33.420 回答