Trong VB.NET, ngay cả với Option Strict
trên, nó có thể vượt qua một Enum xung quanh như là một số nguyên.Làm thế nào để xác định nếu một số nguyên nhất định là trong một Enum cụ thể?
Trong tình huống cụ thể của tôi, ai đó đang sử dụng một enum tương tự như sau:
Public Enum Animals
Monkey = 1
Giraffe = 2
Leopard = 3
Elephant = 4
End Enum
Nhưng họ đang đi qua nó chạy lòng vòng như Integer để họ có thể thiết lập giá trị là -1 là "Không có động vật" (không có phải bao gồm "Không có động vật" trong chính Enum), nghĩa là:
Public Sub MakeAnimalJump(animalType As Int32)
If animalType < 1 Then
' Clearly not an animal...
Else
' Make that animal jump...
End If
End Sub
Tuy nhiên, sau này, chúng yêu cầu nó trở thành loại động vật một lần nữa. Câu hỏi của tôi là, ngoài a) thay đổi Enum để bao gồm giá trị "None" hoặc b) đi qua từng giá trị trong Enum bằng cách sử dụng [Enum].GetValues(...)
, có cách dễ dàng để tìm ra liệu một Integer đã ánh xạ tới một giá trị trong enum hay không hay không?
Tôi đã hy vọng có thể có một [Enum] .TryParse hoặc một cái gì đó, nhưng nó không giống như có.
EDIT: Như một số bạn đã đề xuất, có một Enum.TryParse trong .NET 4. Thật không may, dự án được đề cập vẫn phải hỗ trợ Windows Server 2000, vì vậy chúng tôi không thể sử dụng Khuôn khổ .NET mới nhất (hy vọng chúng tôi sẽ sớm có thể thả hỗ trợ cho Windows Server 2000!).
Enum.TryParse() http://msdn.microsoft.com/en-us/library/ee835389.aspx – jrummell