2011-01-20 171 views
4

有人給我一個類型t。有什麼辦法可以檢查一個類型是枚舉類型嗎?

我想知道如果這種類型是枚舉或不。

public bool IsEnumeration(Type t) 
{ 
    // Mystery Code. 
    throw new NotImplementedException(); 
} 

public void IsEnumerationChecker() 
{ 
    Assert.IsTrue(IsEnumeration(typeof(Color))); 
    Assert.IsFalse(IsEnumeration(typeof(float))); 
} 

回答

10

您也可以通過Type使用屬性IsEnum檢查:

Type t = typeof(DayOfWeek); 
bool isEnum = t.IsEnum; 
3

有您能做到這一點不同的方式:

return typeof(Enum).IsAssignableFrom(t) && t != typeof(Enum); 

return typeof(Enum).IsAssignableFrom(t) && t.IsValueType; 

或(現在,我已經看到了it exists同時檢查IsValueType

return t.IsEnum; 

顯然後者是最好的方法,但前兩個將給你提示如何處理類似的情況。

+0

謝謝,我會記住它。 – user420667 2011-01-20 19:10:24

+0

@Downvoter:關心評論? – 2011-01-20 19:16:48