So listen Sie alle Enum-Werte in C# auf: vollständige Anleitung für Anfänger

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

Warum ist die Frage "How can I enumerate an enum?" so beliebt?

\n\n

Wenn Sie jemals in C# programmiert und mit Aufzählungen (enum) gearbeitet haben, haben Sie sich sicherlich gefragt: "Wie erhalte ich alle Werte dieses enum?". Diese Frage ist ein echter Hit auf Stack Overflow mit tausenden von Aufrufen. Und das ist nicht verwunderlich: Das Auflisten eines enum ist eine dieser Aufgaben, die einfach erscheint, aber ohne Kenntnis der richtigen Syntax selbst erfahrene Entwickler in die Irre führen kann.

\n\n

In diesem Artikel werden wir uns ansehen, wie man alle Werte eines enum in C# korrekt auflistet, zeigen funktionierende Codebeispiele, die Sie direkt in Ihr Projekt kopieren können, und auf mögliche Fallstricke hinweisen. Los geht's!

\n\n

Was ist ein enum in C#? Eine kurze Erinnerung

\n\n

Enum (Aufzählung) ist ein Datentyp, der es ermöglicht, einen Satz benannter Konstanten zu definieren. Zum Beispiel Wochentage, Bestellstatus oder Fehlertypen. In C# wird ein enum wie folgt deklariert:

\n\n
public enum DayOfWeek\n{\n    Monday,\n    Tuesday,\n    Wednesday,\n    Thursday,\n    Friday,\n    Saturday,\n    Sunday\n}
\n\n

Jedem Element wird standardmäßig ein ganzzahliger Wert zugewiesen (beginnend mit 0). Aber oft besteht die Notwendigkeit, alle Elemente eines enum zu durchlaufen – zum Beispiel, um sie in einer Dropdown-Liste anzuzeigen, ein Array zu erstellen oder zu prüfen, ob ein Wert existiert.

\n\n

Wie man alle Enum-Werte auflistet: Die grundlegende Methode

\n\n

Die beliebteste und einfachste Methode ist die Verwendung der statischen Methode Enum.GetValues(). Sie gibt ein Array aller Werte der angegebenen Aufzählung zurück. So funktioniert es:

\n\n
using System;\n\npublic class Program\n{\n    public enum Status\n    {\n        New,\n        InProgress,\n        Completed,\n        Cancelled\n    }\n\n    public static void Main()\n    {\n        // Alle enum-Werte abrufen\n        Status[] allStatuses = (Status[])Enum.GetValues(typeof(Status));\n\n        // Mit foreach durchlaufen\n        foreach (Status status in allStatuses)\n        {\n            Console.WriteLine(status);\n        }\n    }\n}
\n\n

Ergebnis der Ausführung:

\n
New\nInProgress\nCompleted\nCancelled
\n\n

Beachten Sie: Wir wandeln das Ergebnis explizit in ein Array vom Typ Status[] um, da Enum.GetValues() ein Array (nicht typisiert) zurückgibt.

\n\n

Alternative: Enum.GetNames()

\n\n

Wenn Sie nicht die Werte selbst, sondern nur deren Zeichenfolgennamen benötigen, verwenden Sie Enum.GetNames():

\n\n
string[] statusNames = Enum.GetNames(typeof(Status));\nforeach (string name in statusNames)\n{\n    Console.WriteLine(name);\n}
\n\n

Das Ergebnis ist dasselbe, aber der Elementtyp ist string und nicht Status. Dies ist praktisch, wenn Sie mit der Benutzeroberfläche oder Serialisierung arbeiten.

\n\n

Moderner Ansatz: Generische Version (C# 7.3+)

\n\n

Ab C# 7.3 gibt es eine elegantere Methode – Enum.GetValues<T>(). Sie gibt ein Array des spezifischen Typs zurück, und eine Typumwandlung ist nicht erforderlich:

\n\n
Status[] allStatuses = Enum.GetValues<Status>();\n\nforeach (Status status in allStatuses)\n{\n    Console.WriteLine($"ID: {(int)status}, Name: {status}");\n}
\n\n

Diese Methode ist kürzer und typsicherer. Wenn Sie eine moderne Version von C# verwenden (was Sie sollten!), empfehle ich diese.

\n\n

Beispiel aus der Praxis: Befüllen einer Dropdown-Liste

\n\n

Stellen Sie sich vor, Sie schreiben eine Anwendung zur Aufgabenverwaltung. Sie möchten dem Benutzer eine Liste möglicher Status in einem Dropdown-Menü anzeigen. So geht das mit Enum-Aufzählung:

\n\n
using System;\nusing System.Collections.Generic;\n\npublic class TaskManager\n{\n    public enum TaskStatus\n    {\n        NotStarted,\n        InProgress,\n        WaitingForReview,\n        Done\n    }\n\n    publ                

Blogs

Buchempfehlungen