有没有办法迭代和反映枚举中包含的成员名称和值?

Ben*_*ack 7 c# iteration reflection enums enumeration

假设我有以下内容enum:

public enum Colors
{
    White = 10,
    Black = 20,
    Red = 30,
    Blue = 40
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法遍历所有成员Colors以查找成员名称及其值.

Ree*_*sey 12

您可以使用Enum.GetNamesEnum.GetValues:

var names = Enum.GetNames(typeof(Colors));
var values = Enum.GetValues(typeof(Colors));

for (int i=0;i<names.Length;++i)
{
    Console.WriteLine("{0} : {1}", names[i], (int)values.GetValue(i));
}
Run Code Online (Sandbox Code Playgroud)

注意:当我尝试使用代码运行时values[i],它会引发异常,因为values它是类型的Array.