我有一个简单的枚举:
public enum MyEnum
{
[Description("Zero")]
Zero,
[Description("A positive number")]
Positive,
[Description("Any integer")]
AnyInteger,
[Description("A negative number")]
Negative,
[Description("Reserved number")]
Reserved =2
}
但是,运行以下代码:
MyEnum temp = MyEnum.AnyInteger;
string en = temp.ToString();
将en字符串设置为Reserved。
为什么会这样?
是否有其他方法可以将字符串设置为使用的枚举字符串(在本例中为AnyInteger)?
答案 0 :(得分:5)
在定义枚举时,第一个值以0
开头并且从那里开始,除非你定义其他明智的,所以在你的情况下它是:
public enum MyEnum
{
[Description("Zero")]
Zero, //0
[Description("A positive number")]
Positive, //1
[Description("Any integer")]
AnyInteger, //2
[Description("A negative number")]
Negative, //3
[Description("Reserved number")]
Reserved = 2 // it's 2 again
}
您可以在枚举中定义两次(或更多)相同的值。 ToString
找到具有相同值的名称:
MyEnum temp=MyEnum.AnyInteger; //temp = 2
string en=temp.ToString(); // return the name of the first name with value 2.
如果您坚持认为“保留”的值应为2,请将其放在正确的位置。否则删除=2
答案 1 :(得分:4)
之所以发生这种情况,是因为您已将保留设置为2.如果要为枚举设置值,则应全部执行或不执行任何操作。