在.NET
中,您可以为同一个整数设置多个enum
值吗?
例如
public enum PersonGender
{
Unknown = 0,
Male = 1,
Female = 2,
Intersex = 3,
Indeterminate = 3,
NonStated = 9,
InadequatelyDescribed = 9
}
答案 0 :(得分:12)
在C#中,根据C# Language Specication版本4,允许这样做。
第1.10 Enums
部分未提及可能性,但稍后在14 Enums
部分中,我们看到(在14.3
中):
多个枚举成员可以共享相同的关联值。例子
enum Color {
Red,
Green,
Blue,
Max = Blue
}
显示一个枚举,其中两个枚举成员 - Blue
和Max
- 具有相同的关联值。
答案 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" }
}
}