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