可能重複:
Iterating through an enumeration in Silverlight?如何通過枚舉作爲參數
我想出了一個方便的小功能讓我一個枚舉的計數(我知道這不會與所有枚舉正常工作)。而不是將Enum硬編碼到函數中,這樣我必須爲每個要使用它的Enum編寫一個分離函數,我想將該枚舉作爲參數傳遞,但我很難弄清楚如何執行此操作。
下面是代碼:
private enum MyColors { Red, Green, Blue }
private Int32 GetEnumCount()
{
Int32 i = 0;
while (Enum.IsDefined(typeof(MyColors), (MyColors)i))
{
i++;
}
return i;
}
UPDATE
我想出了這個作爲最終的答案:
private Int32 GetEnumCount(Type enumType)
{
Int32 i = 0;
while (Enum.IsDefined(enumType, i))
{
i++;
}
return i;
}
順便說一句,該網頁上第二高的答案是我推薦的答案。 – Noldorin
此方法僅適用於枚舉值連續的情況。一個'Flags'歸因枚舉通常會在所使用的整數中存在差距,所以這種方法會失敗。也許你可以解釋爲什麼你需要這個? – AnthonyWJones