VB.NETでは、Option Strict
をオンにしても、Enumを整数として渡すことができます。なし(与えられたIntegerが特定のEnumに含まれているかどうかを調べるには?
Public Enum Animals
Monkey = 1
Giraffe = 2
Leopard = 3
Elephant = 4
End Enum
しかし、彼らは、彼らが値を設定することができるように整数としてそれを周りに渡しているが、-1の「いいえ動物」がないように:私の特定の状況で
、誰かがこれに似列挙型を使用していますつまり、列挙型自体で「いいえ動物」)、含まないようになる:後に、彼らは動物のようにそれを求めている、しかしPublic Sub MakeAnimalJump(animalType As Int32)
If animalType < 1 Then
' Clearly not an animal...
Else
' Make that animal jump...
End If
End Sub
が再び入力します。私の質問は、a) "None"値を含むようにEnumを変更するか、またはb)Enumの各値を[Enum].GetValues(...)
を使って循環させることで、与えられたIntegerが列挙型の値にマップするかどうかを簡単に調べることができますか否か?
[Enum] .TryParseなどがあるかもしれないと思っていましたが、そうは見えません。
EDIT:.NET 4にEnum.TryParseがあります。残念ながら、問題のプロジェクトはWindows Server 2000をサポートしている必要がありますので、最新の.NET Frameworkを使用することはできませんすぐにWindows Server 2000のサポートを中止することができます。
Enum.TryParse()http://msdn.microsoft.com/en-us/library/ee835389.aspx – jrummell