В VB.NET даже при включенном Option Strict
можно передавать Enum как целое число.
В моей конкретной ситуации кто-то использует перечисление, подобное этому:
Public Enum Animals
Monkey = 1
Giraffe = 2
Leopard = 3
Elephant = 4
End Enum
Но они передают его как целое число, поэтому они могут установить значение -1, равное «Нет животных» (без необходимости включать «Нет животных» в самом Enum), то есть:
Public Sub MakeAnimalJump(animalType As Int32)
If animalType < 1 Then
' Clearly not an animal...
Else
' Make that animal jump...
End If
End Sub
Однако позже они просят, чтобы это снова был тип Животных.Мой вопрос, кроме а) изменения Enum для включения значения «None» или б) циклического перебора каждого значения в Enum с использованием [Enum].GetValues(...)
, есть ли простой способ выяснить, соответствует ли данное целое число значению вперечисление или нет?
Я надеялся, что может быть [Enum] .TryParse или что-то еще, но это не выглядит так.
РЕДАКТИРОВАТЬ: Как некоторые из вас предложилиВ .NET 4 есть Enum.TryParse. К сожалению, рассматриваемый проект должен по-прежнему поддерживать Windows Server 2000, поэтому мы не можем использовать последнюю версию .NET Framework (надеюсь, мы сможем отказаться от поддержки Windows Server 2000).скоро ..!).