在.NET
你可以有多个enum
值为相同的整数?你可以有多个相同的整数枚举值?
例如。
public enum PersonGender
{
Unknown = 0,
Male = 1,
Female = 2,
Intersex = 3,
Indeterminate = 3,
NonStated = 9,
InadequatelyDescribed = 9
}
在.NET
你可以有多个enum
值为相同的整数?你可以有多个相同的整数枚举值?
例如。
public enum PersonGender
{
Unknown = 0,
Male = 1,
Female = 2,
Intersex = 3,
Indeterminate = 3,
NonStated = 9,
InadequatelyDescribed = 9
}
工作正常。您发布的代码绝对没有错。它编译就好和代码工作,需要提醒的是
PersonGender.NonStated == PersonGender.InadequatelyDescribed
我会建议一个枚举不会在你的上下文中使用,而不是您可以使用创建一个类并且能够方法正确的事解决你的目的。在你的班级这样的东西: -
class A
{
static readonly ABCD= new Dictionary<int,string>
{
{ 1, "X" },
{ 2, "X" },
{ 3, "Y" }
{ 4, "Y" }
}
}
你是如何得出这个结论的? – 2013-03-17 06:27:34
@MichaelPetrotta: - 是的,我同意我不应该把它作为结论,但绝对是我的建议。 – 2013-03-17 06:29:49
为什么downvote? – 2013-03-17 06:31:30
我发现这个StackOverflow发布与此问题相关。我认为这是如何工作的一个非常明智的讨论。 Non-unique enum values
现在,我还可以补充一点,我认为这将是一个模糊的(因此不正确的)使用枚举。编写对其他人阅读代码有意义的代码很重要,在这种情况下,我会被这个枚举推迟。
在C#中,这是不允许的,因为每C# Language Specication,第4版。
第1.10 Enums
没有提到的可能性,但后来在部分14 Enums
,我们看到(在14.3
):
多个枚举成员可能共享相同的关联值。该示例
enum Color {
Red,
Green,
Blue,
Max = Blue
}
示出了一个枚举,其中两个枚举成员 - Blue
和Max
- 具有相同的相关联值。
编译器在你尝试时说什么?说真的,没有人再想过吗? – paxdiablo 2013-03-17 06:18:00
@paxdiablo在C++中,很多未定义的行为将被编译器接受而不会发出警告。 – 2013-03-17 06:21:32
@ ta.speot.is,这不是C++,它是C#。行为由MS定义。 – paxdiablo 2013-03-17 06:22:51