2009-02-13 6 views
1

je le code suivant:vb.net, l'option stricte, énumérations et ToString primordial

Public Enum Country 
    Canada = 1 
    USA = 2 
End Enum 

Quand je veux voir si l'utilisateur a sélectionné une valeur, je fais:

ddl.SelectedValue = Country.Canada 

Ce qui fonctionne bien. Cependant, si j'active un avertissement pour la conversion implicite, cela donne un avertissement. Changement à

ddl.SelectedValue = Country.Canada.ToString() 

échoue, car la méthode ToString() retourne "Canada" et non "1".

Quelle est la meilleure façon de se débarrasser de l'avertissement?

Répondre

1

Vous pouvez convertir explicitement SelectedValue en int ou le pays en une chaîne.

If CInt(ddl.SelectedValue) = Country.Canada 

ou

If ddl.SelectedValue = CStr(Country.Canada) 

Si vous prenez la première option, vous devrez peut-être déclarer explicitement votre ENUM entier

Public Enum Country As Integer 

L'avertissement se produit parce que SelectedValue est une chaîne, et le pays est un entier, donc une conversion implicite se produit - exactement comme elle le dit !!

0

Si vous voulez la valeur '1' plutôt que 'Canada', vous pouvez explicitement le convertir en entier, puis appeler .ToString() sur le résultat de cela.

ddl.SelectedValue = DirectCast(Country.Canada, Integer).ToString() 
Questions connexes