今天,当我玩弄枚举时,我从C#编译器中遇到了一些有点奇怪的行为。

enum FunWithEnum
{
    One = 1,
    Two,
    Three,
    Four = 1,
    Five = 2,
    Six
}


结果:


FunWithEnum.One =一
FunWithEnum.Two =两个
FunWithEnum.Three =三
FunWithEnum.Four = 1
FunWithEnum.Five =两个
FunWithEnum.Six =三个


有人可以向我解释为什么这些值是一旦编译后的值吗?

我最初的猜测与使用枚举时能够具有别名有关。但是我不知道这是否有意义。

最佳答案

根据docs

the value of each successive enumerator is increased by 1.

在这个基础上

One = 1,
Two,  // = 2
Three,  // = 3
Four = 1,
Five = 2,
Six //== 3


而且来自the answer to the other question

当多个枚举具有相同的值时,ToString将返回什么是未定义的

07-27 13:47