枚举类型的值
我只是想知道为什么我会得到这个输出:
enum MyEnum
{
a=1,
b=2,
c=3,
d=3,
f=d
}
Console.WriteLine(MyEnum.f.ToString());
OUTPUT
c
但是在 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
I'm just wondering why I get this output :
enum MyEnum
{
a=1,
b=2,
c=3,
d=3,
f=d
}
Console.WriteLine(MyEnum.f.ToString());
OUTPUT
c
But in Mono
OUTPUT
f
So why is the output c? not d? How does the compiler choose c? If I change the code like this:
enum MyEnum
{
a=1,
b=2,
c=3,
d=3,
k=3
}
Console.WriteLine(MyEnum.k.ToString());
OUTPUT
c
again!
Another example:
enum MyEnum
{
a=3,
b=3,
c=3,
d=3,
f=d,
}
MessageBox.Show(MyEnum.f.ToString());
OUTPUT
c
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自 MSDN:
请参阅:http://msdn.microsoft.com/en-us/library /a0h36syw.aspx#Y300
From MSDN:
See: http://msdn.microsoft.com/en-us/library/a0h36syw.aspx#Y300
输出是 c,因为 ToString 解析枚举的索引并打印出该索引处的表示形式。在第一个示例中,d=3,第三个索引枚举值是 c。类似地,当查找 k 的第三个索引时,它会在 k 之前到达 c,因此这又是输出。
The output is c because ToString resolves the index of the enum and prints out the representation at that index. In the first example, d=3, and the third indexed enum value is c. Similarly, when looking for the third index for k, it arrives at c before k, so that is again the output.