2013-07-26 31 views
1

假設有一個枚舉:轉換枚舉整數數組的擴展方法

Public Enum MyEnum 
    Value1 = 100 
    Value2 = 200 
    Value3 = 300 
End Enum 

如何擴展方法來實現得到這個枚舉的所有值的整數數組?

Dim ints As Integer() = GetType(MyEnum).ToIntArray() 
' result: ints = {100, 200, 300} 

(我已經看到了擴展方法必須立足於一個類型。)

+0

這裏有一些不錯的擴展方法:http://stackoverflow.com/questions/105372/how -do -i-enumerate-an-enum?rq = 1 –

回答

1
<System.Runtime.CompilerServices.Extension()> _ 
Public Function ToIntArray(Of T As Type)(a As T) As Integer() 
    Return [Enum].GetValues(a).Cast(Of Integer)().ToArray 
End Function 
+0

如果類型是枚舉'a.IsEnum',我會添加一個檢查。 – Styxxy

+0

@Styxxy:是的,也想過這個。但實際上,這在'[Enum] .GetValues()'中隱含地完成了,不是嗎? – jor

+0

是的,隱含的。 – Styxxy