给出以下代码:
public enum Enum1
{
ONE,
TWO
}
public enum Enum2
{
A,
B
}
此代码返回一个,两个:
foreach (Enum1 e in Enum.GetValues(typeof(Enum1)))
{
Console.WriteLine(e);
}
但是,此代码不会失败(因为
Enum2 e
与typeof(Enum1)
一起使用),而是返回A,B:foreach (Enum2 e in Enum.GetValues(typeof(Enum1)))
{
Console.WriteLine(e);
}
这是为什么?
最佳答案
因为在幕后Enums只是ints-第二个返回的是Enum1
的值,但实际上这些值只是0
和1
。当您将这些值转换为Enum2
类型时,它们仍然有效,并且对应于值“A”和“B”。