C # Enums und Casting

7

Wenn Sie eine Aufzählung in C # deklarieren, ist der Standardtyp automatisch int.

Also warum in einer case-Anweisung oder anderen Instanzen, wenn Sie die enum verwenden, müssen Sie explizit umschreiben, um die Werte zu verwenden? Was ist der Grund dafür, einen zugrunde liegenden Typ zu haben, wenn du explizit etwas sagen musst oder mache ich hier nur etwas falsch?

%Vor%     
user72603 11.03.2009, 02:58
quelle

4 Antworten

15

Was ist der Typ eines Wertes? Wenn der Typ MyEnum ist, ist Casting nicht notwendig und sollte ohne Fehler funktionieren.

Wenn der Typ int ist, dann müssen Sie zu einem MyEnum wechseln, um richtig zwischen Groß- und Kleinschreibung zu wechseln. Sie können dies jedoch etwas vereinfachen, indem Sie den Wert anstelle jeder case-Anweisung übergeben. Zum Beispiel

%Vor%     
JaredPar 11.03.2009 03:02
quelle
4

Offensichtlich ist somevalue eine Ganzzahl und nicht explizit als Enum eingegeben. Sie sollten daran denken, dass der zugrunde liegende Wert einer Enumeration nur der "Speichertyp" ist ist nicht implizit austauschbar. Sie können jedoch den Umwandlungsoperator verwenden, um Ihren Code einfach und "mehr" sicher zu machen:

%Vor%

Schließlich möchten Sie vielleicht ein Design, bei dem Sie nicht von einer Ganzzahl in eine Enumeration konvertieren müssen, aber oft ist dies beim Lesen von einer Festplatte oder DB nicht der Fall.

    
user7116 11.03.2009 03:02
quelle
2

Wenn somevalue vom Typ MyEnum ist, müssen Sie nicht in int umwandeln.

%Vor%     
Mitch Wheat 11.03.2009 03:02
quelle
1

Wie andere gesagt haben:

  • Wenn ein Wert vom Typ MyEnum ist, dann sollte nicht umwandeln müssen.
  • Wenn Sie aus einer Datenbank lesen oder Textdatei, möchten Sie vielleicht Enum verwenden Parse-Methode, um einen Enum-Wert zu erhalten aus einer Zeichenfolge.
  • Wenn Sie unbedingt ein int, es ist effizienter zu spielen der Wechsel zu MyEnum, anstatt Wirf jeden MyEnum-Wert auf einen int.
Tim 11.03.2009 03:43
quelle

Tags und Links