一尘不染

C#遍历枚举?(索引System.Array)

c#

我有以下代码:

// Obtain the string names of all the elements within myEnum 
String[] names = Enum.GetNames( typeof( myEnum ) );

// Obtain the values of all the elements within myEnum 
Array values = Enum.GetValues( typeof( myEnum ) );

// Print the names and values to file
for ( int i = 0; i < names.Length; i++ )
{
    print( names[i], values[i] ); 
}

但是,我无法索引值。有没有更简单的方法可以做到这一点?

还是我完全错过了一些东西!


阅读 612

收藏
2020-05-19

共1个答案

一尘不染

Array values = Enum.GetValues(typeof(myEnum));

foreach( MyEnum val in values )
{
   Console.WriteLine (String.Format("{0}: {1}", Enum.GetName(typeof(MyEnum), val), val));
}

或者,您可以强制转换返回的System.Array:

string[] names = Enum.GetNames(typeof(MyEnum));
MyEnum[] values = (MyEnum[])Enum.GetValues(typeof(MyEnum));

for( int i = 0; i < names.Length; i++ )
{
    print(names[i], values[i]);
}

但是,您可以确定GetValues以与GetNames返回名称相同的顺序返回值吗?

2020-05-19