2009-05-12 12 views

Odpowiedz

104
Dim val = DirectCast([Enum].Parse(GetType(Gender), "Male"), Gender) 
+0

co, jeśli nie znam typu i chciałbym ogólnie przekonwertować. w tym przykładzie podano "Male". Zapisałem wartość wyliczenia w bazie danych i próbuję ją odzyskać. w tym przypadku mogę nie znać rzeczywistej wartości, którą zapisałem, ponieważ dokonuję konwersji naString – Smith

+0

Powinieneś zapisać powiązany typ Enum z wartością, powiedz "Namespaces.EnumName". Po użyciu odbicia można uzyskać obiekt Type według nazwy: Dim t = Type.GetType ("Namespaces.EnumName") i przekazać "t" zamiast "GetType (Gender)". Musisz również rzucić wartość wyniku. Aby to zrobić, musisz znać specyficzny typ wyliczenia podczas pisania kodu. – Kamarey

+2

W .NET 4.0 składnia jest po prostu: 'Parse (enumType As System.Type, value As String) As Object' – motto

18

Zobacz Enum.TryParse.

+0

jest tylko metoda parse(). Nie wiesz, gdzie jest metoda Enum.TryParse()? –

+10

@David: Enum.TryParse() jest dostępny w .NET 4 –

+1

poprawnym łączu, nie może edytować odpowiedzi, ponieważ ma mniej niż 30 znaków: http://msdn.microsoft.com/en-us/library/dd783499 .aspx –

2

jaki sposób można przekonwertować ciąg „męski” męski wartości płci ENUM jest?

Przyjęte rozwiązanie zwraca obiekt Enum. Aby przywrócić wartość chcesz tego rozwiązania:

dim MyGender as string = "Male" 
dim Value as integer 
Value = DirectCast([Enum].Parse(GetType(Gender), MyGender), Integer) 

można również zrobić to w ten sposób:

value = cInt([enum].Parse(GetType(Gender), MyGender)) 
0

Jeśli chcesz parse być przypadek niewrażliwe, można użyć następujących:

[Enum].Parse(Gender, DirectCast(MyGender, String), True) 

to zajmie dim MyGender as string = "Male" lub dim MyGender as string = "male"

Powiązane problemy