C#通过反射获取枚举值列表

通过Type.GetFields(BindingFlags.Static)获取枚举值列表,然后通过FieldInfo.GetValue(null)就能获取到值,注意是传入null,像获取静态值和常量那样。

返回的值可以直接强转为int,因为枚举的基础类型就是int。

如果获取所有的字段信息,会发现里面有个System.Int32 value__,他是个隐藏的变量,用来存储枚举的实际值。这也说明,枚举的基础类型是int


public enum MyTestEnum
{
	A = 0,
	B = 5,
	C = 100,
}
FieldInfo[] fields = typeof(MyTestEnum).GetFields();
for(int i = 0; i < fields.Length; i++)
{
	if(i > 0)
		Debug.Log(fields[i] + "--->" + (int)fields[i].GetValue(null));
	else
		Debug.Log(fields[i]);
}

C#通过反射获取枚举值列表_第1张图片





你可能感兴趣的:(C#)