我只是想知道为什么我得到这个输出:
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
答案 0 :(得分:36)
来自MSDN:
如果多个枚举成员具有相同的基础值而您 尝试检索枚举的字符串表示形式 会员的名称基于其基础价值,您的代码不应该 关于该方法将返回的名称的任何假设。
请参阅:http://msdn.microsoft.com/en-us/library/a0h36syw.aspx#Y300
答案 1 :(得分:0)
输出为c,因为ToString解析了枚举的索引并打印出该索引处的表示。在第一个例子中,d = 3,第三个索引的枚举值是c。类似地,当寻找k的第三个索引时,它在k之前到达c,因此这也是输出。