2016-06-12 8 views
0

In meinem Code ich habe dies:Muss ich Cast und Enum und wie mache ich das?

 var wordForm = new WordForm() 
     { 
      WordId = word.WordId, 
      Definition = webWordForm.definition, 
      SourceId = webWordForm.sourceId, 
      StatusId = EStatus.Download, 
      PosId = WordToPosId(webWordForm.partOfSpeech) 
     }; 

ich erklärte die Enum:

public enum EStatus { 
    NotSet = 0, 
    New  = 1, 
    Download = 2, 
    Edited = 3 
} 

und die StatusID:

public int StatusId { get; set; } // StatusId 

Muss ich dies in einen int werfen müssen, und wenn Also, wie mache ich das?

+0

(int) EStatus.Download oder Convert.ToInt32 (EStatus.Download) –

+0

Was ist der Typ von WordForm.StatusId? – fahadash

+0

Mögliches Duplikat von [Get int value from enum] (http://stackoverflow.com/questions/943398/get-int-value-from-enum) –

Antwort

2

Guss der Enum als

StatusId = (int)EStatus.Download 
+2

Anstelle von Löffelfütterung, geben Sie ihr etwas mehr wie Enum zu Int Casting funktioniert . Wie Enum ist im Grunde Int-Werte unter dem Stoff. etc – fahadash

1

eine explizite Umwandlung erforderlich ist, wenn Art von Enum deklariert wird. Aber der Standardwert für Enum ist int

Jeder Aufzählungstyp einen zugrunde liegenden Typen hat, die jeder integraler Typ außer char sein kann.

So ein Beispiel dafür ist:

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; 

Days deklariert wird als byte so eine explizite Umwandlung erforderlich ist, wenn es zu einer int Variablen zugewiesen wird, da die Enum als byte erklärt

int x = (int)Days.Sun; 

Es ist jedoch eine explizite Umwandlung erforderlich, um vom Enum-Typ in ein 01 zu konvertierenintegraler Typ.

So für Ihr Beispiel gibt es keine Notwendigkeit, es da die zugrunde liegenden Typ Ihrer Aufzählung zu werfen ist ein int

Diese aus der Dokumentation ist enum c#. Bitte nehmen Sie sich Zeit, APIs zu lesen.

Verwandte Themen