2013-10-30 15 views
6

Non riesco a selezionare tra due metodi di conversione. Qual è la migliore pratica per la conversione da enum a intEnum to int best practice

1:

public static int EnumToInt(Enum enumValue) 
{ 
    return Convert.ToInt32(enumValue); 
} 

2:

public static int EnumToInt(Enum enumValue) 
{ 
    return (int)(ValueType)enumValue; 
} 
+1

Golly questo problema mi bug così tanto. –

risposta

3

Inoltre to @dtb

È possibile specificare l'int (o flag) dell'enumerazione fornendolo dopo il segno di uguale.

enum MyEnum 
{ 
    Foo = 0, 
    Bar = 100, 
    Baz = 9999 
} 

Acclamazioni

3

Se si dispone di un enum come

enum MyEnum 
{ 
    Foo, 
    Bar, 
    Baz, 
} 

e un valore di quell'enumerazione come

.210

quindi il modo migliore per convertire il valore a un int è

int result = (int)value; 
2

vorrei lanciare una terza alternativa nel mix, sotto forma di un metodo di estensione su Enum

public static int ToInt(this Enum e) 
{ 
    return Convert.ToInt32(e); 
} 

enum SomeEnum 
{ 
    Val1 = 1, 
    Val2 = 2, 
    Val3 = 3, 
} 

int intVal = SomeEnum.ToInt(); 
+0

Dove posso Impossibile convertire il tipo 'System.Enum' in int – zrabzdn

+0

Prova con il mio ultimo aggiornamento – TGH

+1

TGH, Grazie! – zrabzdn