Wie man alle Enum-Werte in C# durchläuft: Vollständiger Leitfaden mit Beispielen

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

Wie man alle Enum-Werte in C# durchläuft: Vom Anfänger zum Profi

\n\n

Stellen Sie sich vor: Sie schreiben ein Spiel in C# und haben eine Aufzählung Difficulty mit Schwierigkeitsgraden: Easy, Normal, Hard, Insane. Sie müssen alle in einem Auswahlmenü anzeigen oder, sagen wir, eine Dropdown-Liste für einen Konfigurator erstellen. Wie macht man das? Manuell ein String-Array schreiben? Und wenn morgen ein neuer Level hinzugefügt wird? Müssten Sie in den Code eingreifen und ihn an drei Stellen ändern.

\n\n

Glücklicherweise gibt es in C# eine elegante Lösung. Die Frage "How to loop through all enum values in C#?" ist eine der beliebtesten auf Stack Overflow (Hunderttausende von Aufrufen). Und heute werden wir sie vollständig behandeln. Sie lernen nicht nur eine, sondern ganze 4 Methoden zum Durchlaufen von Enum-Werten, verstehen, welche wann verwendet wird, und erhalten fertigen Code, den Sie in Ihr Projekt kopieren können.

\n\n

Los geht's!

\n\n
\n\n

Was ist ein Enum in C# und warum sollte man es durchlaufen?

\n\n

Ein Enum (Aufzählung) ist eine Menge benannter Konstanten. Anstatt sich zu merken, dass 0 = Easy, 1 = Normal, 2 = Hard ist, schreiben Sie einfach Difficulty.Easy. Der Code wird lesbar und sicher.

\n\n

Aber wenn ein Projekt 10-20 Enum-Werte hat, stellt sich früher oder später die Aufgabe: alle abrufen. Zum Beispiel:

\n
    \n
  • Eine ComboBox oder Dropdown in der UI füllen.
  • \n
  • Testdaten für alle Varianten erstellen.
  • \n
  • Attribute auf jeden Wert anwenden.
  • \n
  • Zwei Enum-Sets vergleichen.
  • \n
\n\n

Anstatt zu schreiben:

\n
string[] names = { "Easy", "Normal", "Hard", "Insane" };
\n\n

…verwenden wir Reflektion und integrierte .NET-Methoden. Das ist flexibel, skalierbar und erfordert keine manuelle Aktualisierung.

\n\n
\n\n

Methode 1: Der Klassiker — Enum.GetValues (die beliebteste)

\n\n

Dies ist die Antwort, die Sie auf Stack Overflow mit den meisten Stimmen finden. Die Methode Enum.GetValues(typeof(YourEnum)) gibt ein Array aller Werte einer bestimmten Aufzählung zurück.

\n\n

Codebeispiel:

\n
using System;\n\npublic enum Difficulty\n{\n    Easy,\n    Normal,\n    Hard,\n    Insane\n}\n\nclass Program\n{\n    static void Main()\n    {\n        Console.WriteLine("Alle Schwierigkeitsgrade:");\n        \n        // Array der Enum-Werte abrufen\n        Difficulty[] allDifficulties = (Difficulty[])Enum.GetValues(typeof(Difficulty));\n        \n        foreach (Difficulty level in allDifficulties)\n        {\n            Console.WriteLine($"Stufe: {level} (numerischer Wert: {(int)level})");\n        }\n    }\n}
\n\n

Konsolenausgabe:

\n
Alle Schwierigkeitsgrade:\nStufe: Easy (numerischer Wert: 0)\nStufe: Normal (numerischer Wert: 1)\nStufe: Hard (numerischer Wert: 2)\nStufe: Insane (numerischer Wert: 3)
\n\n

Wichtig: Enum.GetValues gibt ein Array vom Typ Array zurück, daher muss es explizit in Ihren Enum-Typ umgewandelt werden. Ab .NET 5 gibt es eine generische Version: Enum.GetValues<Difficulty>(), die etwas bequemer ist.

\n\n
// .NET 5+ \nDifficulty[] allDifficulties = Enum.GetValues<Difficulty>();\nforeach (var level in allDifficulties)\n{\n    Console.WriteLine(level);\n}
\n\n
\n\n

Methode 2: Namen mit Enum.GetNames abrufen

\n\n

Manchmal benötigen Sie nicht die Werte selbst, sondern deren Zeichenfolgennamen (z. B. für die UI). Dafür gibt es Enum.GetNames. Es gibt ein String-Array zurück.

\n\n

Beispiel:

\n
string[] names = Enum.GetNames(typeof(Difficulty));\nConsole.WriteLine("Namen der Stufen:");\nforeach (string name in names)\n{\n    Console.WriteLine(name);\n}
\n\n

Ausgabe:

\n
Namen der Stufen:\nEasy\nNormal\nHard\nInsane
\n\n

Wann verwenden? Wenn Sie Zeichenfolgen benötigen (z. B. zur Anzeige in der Benutzeroberfläche oder für die Protokollierung) und nicht die Enum-Konstanten selbst.

Blogs

Buchempfehlungen