Enum.ToString返回错误的值?

问题描述 投票:5回答:2

我有一个简单的枚举:

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)吗?

c# enums tostring
2个回答
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


4
投票

发生这种情况是因为您将保留值设置为2。如果要为枚举设置值,则应全部或不执行。

© www.soinside.com 2019 - 2024. All rights reserved.