我有一个简单的枚举:
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();
将字符串设置为保留。
为什么会发生?
还有其他方法可以将字符串设置为使用的枚举字符串(在这种情况下为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 }
您可以在枚举中两次(或多次)定义相同的值。
ToString
查找具有相同值的名称:
MyEnum temp=MyEnum.AnyInteger; //temp = 2 string en=temp.ToString(); // return the name of the first name with value 2.
如果您坚持认为“保留”应具有值2,请将其置于正确的位置。否则删除
=2
发生这种情况是因为您将保留值设置为2。如果要为枚举设置值,则应全部或不执行。