枚举类型的值

时间:2011-10-26 00:17:13

标签: c# enums

我只是想知道为什么我得到这个输出:

enum MyEnum
{
    a=1,
    b=2,
    c=3,
    d=3,
    f=d
}
Console.WriteLine(MyEnum.f.ToString());

OUTPUT
ç


但是在Mono中
输出
˚F

那么为什么输出c?不是吗?编译器如何选择c?如果我更改代码如下:

enum MyEnum
{
    a=1,
    b=2,
    c=3,
    d=3, 
    k=3
}
Console.WriteLine(MyEnum.k.ToString());


输出
C
再次!

另一个例子

enum MyEnum
{
    a=3,
    b=3,
    c=3,      
    d=3,
    f=d,   
}
MessageBox.Show(MyEnum.f.ToString());

输出
C

2 个答案:

答案 0 :(得分:36)

来自MSDN:

  

如果多个枚举成员具有相同的基础值而您   尝试检索枚举的字符串表示形式   会员的名称基于其基础价值,您的代码不应该   关于该方法将返回的名称的任何假设。

请参阅:http://msdn.microsoft.com/en-us/library/a0h36syw.aspx#Y300

答案 1 :(得分:0)

输出为c,因为ToString解析了枚举的索引并打印出该索引处的表示。在第一个例子中,d = 3,第三个索引的枚举值是c。类似地,当寻找k的第三个索引时,它在k之前到达c,因此这也是输出。