2009-12-26 14 views
16

Estoy trabajando en un Battleship game básico para ayudar a mis habilidades de C#. En este momento estoy teniendo un pequeño problema con enum. Tengo:Obtener el valor entero de enum

enum game : int 
{ 
    a=1, 
    b=2, 
    c=3, 
} 

Me gustaría que el jugador pasar la entrada "C" y un código devolver el número entero 3. ¿Cómo lo configuraría para que tome una cadena var (string pick;) y la convierta a la int correcta usando esta enumeración? El libro que estoy leyendo sobre esto es un poco confuso

+2

Es una mala práctica de usar las enumeraciones con los tipos de subyacentes distintos de '' int' y int' es el valor por defecto, por lo que no es necesario hacerlo explícito . Solo digo. –

+2

¿No es su pregunta "obtener el valor enum de una cadena"? – knoopx

Respuesta

39

Simplemente analice la cadena y el molde a int.

var number = (int)((game) Enum.Parse(typeof(game), pick)); 
+0

funciona genial gracias – Anthony

+0

Veo un efecto similar con la expresión de selección (int) (juego) –

+1

¿Qué es 'recoger' aquí? – gdmanandamohon

4

¿simplemente encasillado?

int a = (int) game.a 
+0

No, esto no es lo que el OP está buscando. – Jeff

+0

¡Exactamente lo que necesito, gracias! – Jamie

12
// convert string to enum, invalid cast will throw an exception 
game myenum =(game) Enum.Parse(typeof(game), mystring); 

// convert an enum to an int 
int val = (int) myenum; 

// convert an enum to an int 
int n = (int) game.a; 
3

Si no está seguro de que la cadena de entrada contendría un valor de enumeración válida, puede utilizar Enum.TryParse() para tratar de hacer el análisis. Si no es válido, esto simplemente devolverá falso, en lugar de arrojar una excepción.

jp

0

La respuesta está bien, pero la sintaxis es desordenado.

Mucho más limpio es algo como esto:

public DataSet GetBasketAudit(enmAuditPeriod auditPeriod) 
    { 
     int auditParam =Convert.ToInt32(auditPeriod) ; 
Cuestiones relacionadas