1. 程式人生 > >C#通過反射獲取列舉值列表

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]); }