Wie man einen int aus einem enum in C# erhält: Vom Anfänger zum Profi

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum enum ohne int wie Kaffee ohne Koffein ist?

\n\n

Stellen Sie sich folgende Situation vor: Sie schreiben coolen Code in C#, verwenden Aufzählungen (enum) zum Speichern von Bestellstatus, Wochentagen oder Zugriffsstufen. Alles sieht schön und lesbar aus. Doch plötzlich kommt die Aufgabe: Diesen Wert in einer Datenbank speichern, über eine HTTP-API senden oder einfach im Log ausgeben. Und dann stoßen Sie auf eine Hürde – enum muss in int umgewandelt werden.

\n\n

Dies ist keine bloße „Spielerei“ aus einem Lehrbuch. Laut Stack Overflow-Statistik sammelt die Frage „Get int value from enum in C#“ Hunderttausende von Aufrufen. Selbst erfahrene Entwickler sind manchmal verwirrt: Casting? Convert.ToInt32? Und was, wenn der zugrunde liegende Integer-Typ nicht int ist?

\n\n

In diesem Artikel werden wir alle legalen Methoden durchgehen, um einen ganzzahligen Wert aus einem enum in C# zu erhalten. Angefangen bei der einfachen Typumwandlung bis hin zu fortgeschrittenen Tricks mit Unsafe.As (ja, das gibt es auch!). Sie erfahren, welche Methode schneller, welche sicherer und welche besser nicht in der Produktion verwendet werden sollte.

\n\n

1. Wie ein enum in C# aufgebaut ist: Kurze Einführung

\n\n

Bevor wir konvertieren, erinnern wir uns an die Grundlagen. In C# ist enum ein Wertetyp, der von System.Enum erbt, und sein zugrunde liegender Typ (underlying type) ist standardmäßig int. Sie können jedoch explizit einen anderen Typ angeben:

\n\n
public enum Status : byte\n{\n    New = 0,\n    Active = 1,\n    Closed = 2\n}\n\npublic enum Priority : long\n{\n    Low = 10,\n    Medium = 50,\n    High = 100\n}
\n\n

Das ist wichtig! Wenn Ihr enum byte oder long verwendet, kann eine einfache Umwandlung in int zu einem Fehler oder Datenverlust führen.

\n\n

2. Methode Nr. 1: Explizite Umwandlung (Cast) – der Klassiker

\n\n

Die offensichtlichste und schnellste Methode ist die Verwendung des Typumwandlungsoperators. Sie funktioniert, wenn Sie genau wissen, dass der zugrunde liegende Typ int ist.

\n\n
enum Day { Monday = 1, Tuesday = 2, Wednesday = 3 }\n\nDay today = Day.Tuesday;\nint dayValue = (int)today; // Ergebnis: 2\n\nConsole.WriteLine(dayValue); // Gibt aus: 2
\n\n

Vorteile:

\n
    \n
  • Maximale Leistung – der Compiler generiert eine einzige IL-Anweisung.
  • \n
  • Einfachheit und Lesbarkeit.
  • \n
\n

Nachteile:

\n
    \n
  • Wenn der zugrunde liegende Typ nicht int ist, gibt der Compiler einen Fehler oder eine Warnung aus.
  • \n
  • Funktioniert nicht mit enum, die über long oder byte definiert sind (erfordert doppeltes Casting).
  • \n
\n\n

Wann verwenden: In 90% der Fälle, wenn Ihr enum Standard ist (: int).

\n\n

3. Methode Nr. 2: Convert.ToInt32 – der Allrounder

\n\n

Die Methode Convert.ToInt32() ist ein Schweizer Taschenmesser für die Konvertierung. Sie nimmt ein object entgegen und versucht, es über das Interface IConvertible in int umzuwandeln.

\n\n
enum Status { New = 0, Active = 1, Closed = 2 }\n\nStatus current = Status.Active;\nint statusCode = Convert.ToInt32(current); // Ergebnis: 1\n\nConsole.WriteLine(statusCode); // 1
\n\n

Vorteile:

\n
    \n
  • Funktioniert mit jedem zugrunde liegenden Typ (byte, short, long usw.).
  • \n
  • Erfordert keine explizite Kenntnis des enum-Typs.
  • \n
\n

Nachteile:

\n
    \n
  • Langsamer als direktes Casting (Aufruf einer virtuellen Methode).
  • \n
  • Kann eine InvalidCastException auslösen, wenn kein enum übergeben wird.
  • \n
\n\n

Wann verwenden: Wenn Sie generischen Code schreiben oder mit einem enum arbeiten, dessen zugrunde liegender Typ zum Zeitpunkt der Kompilierung unbekannt ist.

\n\n

4. Methode Nr. 3: GetHashCode() – ein gefährlicher Trick (machen Sie das nicht!)

\n\n

Im Internet findet man den „genialen“ Ratschlag: Verwenden Sie GetHashCode(). Ja, technisch gesehen funktioniert es

Blogs

Buchempfehlungen