在VB.NET中,即使使用Option Strict
,也可以將Enum作爲整數傳遞。如何確定給定的Integer是否在特定的Enum中?
在我的特殊情況下,有人在使用類似這樣的枚舉:-1
Public Enum Animals
Monkey = 1
Giraffe = 2
Leopard = 3
Elephant = 4
End Enum
但它們都是圍繞把它當作一個整數,使他們能夠設置一個值是「沒有動物」(不有包括「沒有動物」在枚舉本身),即:
Public Sub MakeAnimalJump(animalType As Int32)
If animalType < 1 Then
' Clearly not an animal...
Else
' Make that animal jump...
End If
End Sub
但是,後來,他們要求它是一種動物再次輸入。我的問題是,除了a)改變Enum以包含「None」值或b)使用[Enum].GetValues(...)
循環訪問Enum中的每個值,有沒有一種簡單的方法可以計算給定的Integer是否映射到enum中的值或不?
我希望可能有一個[Enum] .TryParse或其他東西,但它看起來並不像。
編輯:正如你們中的一些人所建議的,.NET 4中有一個Enum.TryParse。不幸的是,有問題的項目仍然必須支持Windows Server 2000,所以我們不能使用最新的.NET Framework(希望我們將很快放棄對Windows Server 2000的支持..!)。
Enum.TryParse()http://msdn.microsoft.com/en-us/library/ee835389.aspx – jrummell