В VB.NET, даже с Option Strict
on, можно передать Enum вокруг как целое.
В моей конкретной ситуации кто-то использует перечисление, подобное этому:
Public Enum Animals
Monkey = 1
Giraffe = 2
Leopard = 3
Elephant = 4
End Enum
Но они передают его как Integer, поэтому они могут установить значение -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
Однако позже они просят снова стать типом Animals. Мой вопрос заключается в том, чтобы: а) изменить Enum на включение значения "None" или b) циклическое перемещение через каждое значение в Enum с помощью [Enum].GetValues(...)
, есть ли простой способ определить, соответствует ли данное целое числу значению в перечисление или нет?
Я надеялся, что может быть [Enum].TryParse или что-то в этом роде, но похоже, что нет.
РЕДАКТИРОВАТЬ. Как некоторые из вас предположили, в .NET существует Enum.TryParse. К сожалению, проект, о котором идет речь, все равно должен поддерживать Windows Server 2000, поэтому мы не можем использовать последнюю .NET Framework (надеюсь, мы "Вскоре вы сможете отказаться от поддержки Windows Server 2000..!".