2010-06-22 19 views
5

Ich habe folgende EnumKonvertieren von ENUM in int

public enum TESTENUM 
{ 
    Value1 = 1, 
    Value2 = 2 
} 

ich diese dann verwenden möchten, um eine Integer-Variable zu vergleichen, die ich habe, wie folgt aus:

if (myValue == TESTENUM.Value1) 
{ 
} 

Aber um das zu tun diesen Test ich habe die enum werfen wie folgt (oder vermutlich die ganze Zahl als Typ enum deklariert):

if (myValue == (int) TESTENUM.Value1) 
{ 
} 

gibt es eine Möglichkeit, dass ich das sagen kann compil äh, dass das Enum eine Reihe von ganzen Zahlen ist, so dass ich die Variable nicht umwandeln oder neu definieren muss?

+3

warum möchten Sie das tun? –

Antwort

12

Nein, Sie müssen den ENUM-Wert werfen. Wenn Sie wollen, dann nicht werfen, sollten Sie eine Klasse mit konstanten int Werten:

class static EnumLikeClass 
{ 
    public const int Value1 = 1; 
    public const int Value2 = 2; 
} 

Allerdings gibt einige Nachteile davon sind; Der Mangel an Typensicherheit ist ein großer Grund, die enum zu verwenden.

+4

Danke für den Downvote. Haben Sie einfach das Gefühl, heute Punkte zu verlieren, oder haben Sie einen bestimmten Grund dafür, den Sie teilen möchten? – codekaizen

+1

+1 Gute Antwort. Sie haben nicht nur die Antwort "Sie müssen den Enum-Wert übergeben" angegeben, sondern auch eine Alternative, die für @ pm_2 geeignet sein könnte. Wer auch immer Sie abgelehnt hat, sollte einen Grund angeben. Vielleicht war es die Verwendung des Klassennamens TestEnum für etwas, das kein Enum ist. Wir werden es vielleicht nie erfahren. Was auch immer, es war keinen Downvote wert. –

+0

@Daniel - guter Punkt, vielleicht ist es der schlechte Klassenname. Dort habe ich es repariert! – codekaizen

1

Nein gibt es nicht (im Gegensatz zu C++), und aus einem guten Grund der Typ Sicherheit.

2

Sie können die Enum sagen, dass es ganze Zahlen enthält:

public enum TESTENUM: int 
{ 
    Value1 = 1, 
    Value2 = 2 
} 

auch immer Sie noch manuell haben zu werfen,

+2

Sie müssen noch casten. – codekaizen

+7

Alle Enums sind standardmäßig int. –

+0

müssen Sie nicht angeben: Int wie es standardmäßig ist. – Chinjoo

2

Denken Sie daran, dass das Umwandeln des Enum-Werts in Ihrem Kontext genau wie Sie dem Compiler sagen, dass "hier, ich kenne diesen Enum-Wert von Int zu sein, so verwenden Sie es als solche".