2009-12-26 6 views
16

Ich arbeite an einem grundlegenden Battleship game, um meine C# Fähigkeiten zu helfen. Gerade jetzt habe ich ein kleines Problem mit enum. Ich habe:Den Integer-Wert von enum holen

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

Ich würde den Spieler gerne den Eingang „C“ und einige Code passieren Rückkehr die ganze Zahl 3. Wie würde ich es einrichten, um eine Zeichenkette var (string pick;) zu nehmen und es mit dieser Aufzählung in das richtige int umzuwandeln? Das Buch, das ich hier lese, ist etwas verwirrend

+2

Es ist eine schlechte Praxis Aufzählungen mit zugrunde liegenden anderen Typen als 'int' zu verwenden und' int' ist die Standardeinstellung, so dass Sie es explizit nicht machen müssen . Sag es einfach. –

+2

ist nicht Ihre Frage "Holen Sie den Enum-Wert aus einer Zeichenfolge"? – knoopx

Antwort

39

Parsen Sie einfach die Zeichenfolge und casten Sie zu int.

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

funktioniert super danke – Anthony

+0

Ich sehe einen ähnlichen Effekt mit der (int) (Spiel) Pick Ausdruck –

+1

Was ist 'Pick' hier? – gdmanandamohon

4

nur Typcasting?

int a = (int) game.a 
+0

Nein - das ist nicht das, wonach das OP sucht. – Jeff

+0

Genau das, was ich brauche, danke! – 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

Wenn Sie nicht sicher sind, dass die eingehende Zeichenkette einen gültigen Enum-Wert enthalten würde, können Sie Enum.TryParse() verwenden, um zu versuchen, die Analyse zu tun. Wenn es nicht gültig ist, wird nur false zurückgegeben, anstatt eine Ausnahme auszulösen.

jp

0

Die Antwort ist in Ordnung, aber die Syntax ist chaotisch.

viel ordentlicher ist so etwas wie dieses:

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