我有一个简单的枚举:
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
}
Run Code Online (Sandbox Code Playgroud)
但是,运行以下代码:
MyEnum temp = MyEnum.AnyInteger;
string en = temp.ToString();
将en字符串设置为Reserved.
为什么会这样?
是否有其他方法将字符串设置为使用的枚举字符串(在本例中为AnyInteger)?
在定义枚举时,第一个值从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
}
Run Code Online (Sandbox Code Playgroud)
您可以在枚举中定义两次(或更多)相同的值.在ToString找到具有相同值的名称:
MyEnum temp=MyEnum.AnyInteger; //temp = 2
string en=temp.ToString(); // return the name of the first name with value 2.
Run Code Online (Sandbox Code Playgroud)
如果你坚持认为"保留"应该具有值2,请将他放在正确的位置.否则删除=2