C# 确定枚举值的算法是如何工作的?

C# 确定枚举值的算法是如何工作的?,c#,C#,该算法如何确定C#中的枚举值 主要代码: void Main() { Numbers number; number = Numbers.Four; Console.WriteLine((int) number); Console.WriteLine(number); Console.WriteLine(Numbers.Four); } 示例1 enum Numbers { One, Two, Three, Four =

该算法如何确定C#中的枚举值

主要代码:

void Main()
{
    Numbers number;
    number = Numbers.Four;

    Console.WriteLine((int) number);
    Console.WriteLine(number);
    Console.WriteLine(Numbers.Four);
}

示例1

enum Numbers {
    One,
    Two,
    Three,
    Four = 1,
    Five,
    Six
}
将值设置为1表示4

执行结果表明:

一四四

如果进行反编译,可以看到以下内容:

private enum Numbers
{
    One = 0,
    Two = 1,
    Three = 2,
    Four = 1,
    Five = 2,
    Six = 3
}
private enum Numbers
{
    One = 0,
    Two = 1,
    Three = 2,
    Four = 2,
    Five = 3,
    Six = 4
}

示例2

enum Numbers {
    One,
    Two,
    Three,
    Four = 2,
    Five,
    Six
 }
将值设置为2表示4

执行结果表明:

二三三

如果进行反编译,可以看到以下内容:

private enum Numbers
{
    One = 0,
    Two = 1,
    Three = 2,
    Four = 1,
    Five = 2,
    Six = 3
}
private enum Numbers
{
    One = 0,
    Two = 1,
    Three = 2,
    Four = 2,
    Five = 3,
    Six = 4
}

为什么在第一个示例中选择了最后一个匹配值,而在第二个示例中选择了第一个匹配值?

因为它在最后一个手动指定的值之后开始以文本顺序递增地重新编号。我确定有些问题已经回答了,但我现在找不到。这些值在枚举中必须是唯一的。您所有的问题都在三个链接副本中得到了回答。最特别的是,您问题的核心:当多个枚举成员具有相同的值时,您为给定值获得的成员是:“如果多个枚举成员具有相同的基础值,并且您尝试根据基础值检索枚举成员名称的字符串表示形式,则代码不应对方法将返回的名称进行任何假设。”请查看此链接: