给出以下代码:

public enum Enum1
{
    ONE,
    TWO
}

public enum Enum2
{
    A,
    B
}

此代码返回一个,两个:
foreach (Enum1 e in Enum.GetValues(typeof(Enum1)))
{
  Console.WriteLine(e);
}

但是,此代码不会失败(因为Enum2 etypeof(Enum1)一起使用),而是返回A,B:
foreach (Enum2 e in Enum.GetValues(typeof(Enum1)))
{
    Console.WriteLine(e);
}

这是为什么?

最佳答案

因为在幕后Enums只是ints-第二个返回的是Enum1的值,但实际上这些值只是01。当您将这些值转换为Enum2类型时,它们仍然有效,并且对应于值“A”和“B”。

09-11 17:56