2009-05-12 10 views

Répondre

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

Que faire si je ne connais pas le type et que je voulais convertir en général. Dans cet exemple, vous avez spécifié 'Male'. J'ai enregistré la valeur enum dans la base de données et j'essaie de le récupérer. dans ce cas, je ne connaîtrai peut-être pas la valeur réelle que j'ai sauvegardée depuis que je suis converti enString – Smith

+0

Vous devriez enregistrer le type Enum correspondant avec la valeur, disons "Namespaces.EnumName". Après avoir utilisé la réflexion pour obtenir l'objet Type par nom: Dim t = Type.GetType ("Namespaces.EnumName") et passez le 't' au lieu de 'GetType (Gender)'. De plus, vous devrez lancer la valeur du résultat. Pour ce faire, vous devez connaître le type d'énumération spécifique lors de l'écriture du code. – Kamarey

+2

Dans .NET 4.0, la syntaxe est simplement: 'Parse (enumType As System.Type, valeur As String) As Object' – motto

18
+0

Il n'y a qu'une méthode parse(). Vous ne savez pas où est la méthode Enum.TryParse()? –

+10

@David: Enum.TryParse() est disponible dans .NET 4 –

+1

lien correct, ne peut pas modifier la réponse car elle est inférieure à 30 caractères: http://msdn.microsoft.com/en-us/library/dd783499 .aspx –

2

comment puis-je convertir une chaîne « Homme » à la valeur Homme du genre ENUM?

La solution retenue retourne un objet Enum. Pour revenir à la valeur que vous voulez que cette solution:

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

peut aussi le faire de cette façon:

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

Si vous voulez que l'analyse syntaxique pour être insensible à la casse, vous pouvez utiliser les éléments suivants:

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

Cela gère dim MyGender as string = "Male" ou dim MyGender as string = "male"

Questions connexes