Enums und [Flags]
Definieren Sie Enums mit expliziten Werten und zugrunde liegenden Typen, konvertieren und parsen Sie sie sicher und modellieren Sie kombinierbare Optionen mit [Flags].
Enums und [Flags] ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.
Überblick über Enums
Ziel: Verwenden Sie Enums für benannte Konstanten und [Flags] für kombinierbare Optionen.
- Namen werden Zahlen zugeordnet
- Basistyp (standardmäßig int)
- Umwandeln, parsen und validieren
- Bitweise Kombination mit [Flags]
Einfaches Enum
Enums sind benannte Konstanten. Sie können den Namen ausgeben oder in die zugrunde liegende Zahl umwandeln.
using System;
public enum OrderStatus
{
Pending = 0,
Processing = 1,
Shipped = 2,
Delivered = 3,
Cancelled = 4
}
public class Program
{
public static void Main(string[] args)
{
OrderStatus s = OrderStatus.Processing;
Console.WriteLine("Status = " + s);
Console.WriteLine("Numeric = " + (int)s);
}
}
Zugrunde liegender Typ und Umwandlung
Sie können einen zugrunde liegenden Typ auswählen (short, byte usw.). Das Umwandeln von Zahlen prüft den Wert nicht.
using System;
// Choose underlying type if needed (default is int)
public enum HttpCode : short
{
Ok = 200,
NotFound = 404
}
public class Program
{
public static void Main(string[] args)
{
short code = (short)HttpCode.Ok; // cast to number
HttpCode fromNum = (HttpCode)404; // cast from number (no validation)
Console.WriteLine("code=" + code);
Console.WriteLine("fromNum=" + fromNum);
}
}
Parsen und Validieren
Verwenden Sie Enum.TryParse, um Text einzulesen, und Enum.IsDefined, um numerische Werte zu validieren.
using System;
public enum Color
{
Red = 1, Green = 2, Blue = 3
}
public class Program
{
public static void Main(string[] args)
{
Color c;
bool ok = Enum.TryParse<Color>("green", true, out c); // ignore case
Console.WriteLine("Parsed? " + ok + " value=" + c);
// Validate a numeric value before casting
int raw = 4;
bool valid = Enum.IsDefined(typeof(Color), raw);
Console.WriteLine("Is 4 a defined Color? " + valid);
}
}
[Flags] in der Praxis
Fügen Sie [Flags] hinzu und weisen Sie Zweierpotenzen zu. Kombinieren Sie sie mit |, prüfen Sie sie mit & und entfernen Sie sie mit ~ und &.
using System;
[Flags]
public enum FileAccessMode
{
None = 0,
Read = 1, // 0001
Write = 2, // 0010
Exec = 4 // 0100
}
public class Program
{
public static void Main(string[] args)
{
FileAccessMode m = FileAccessMode.Read | FileAccessMode.Write; // combine
Console.WriteLine("Mode = " + m); // prints "Read, Write"
// Test a flag (two common patterns)
bool canWrite = (m & FileAccessMode.Write) != 0;
Console.WriteLine("Can write? " + canWrite);
// Remove a flag
m = m & ~FileAccessMode.Write;
Console.WriteLine("After remove: " + m);
}
}
Tipps zu Enums
Tipps:
- Vergeben Sie explizite Werte und halten Sie diese stabil.
- Verwenden Sie für [Flags] Zweierpotenzen und fügen Sie ein None = 0 hinzu.
- Validieren Sie Eingaben mit Enum.TryParse/IsDefined.
- Vermeiden Sie rohe Ganzzahlen in öffentlichen APIs und bevorzugen Sie Enums.
Bedeutung des Flags-Attributs
Zusammenfassung
Zusammenfassung: Verwenden Sie Enums für klare, typsichere Konstanten. Parsen und validieren Sie sicher. Für kombinierbare Optionen fügen Sie [Flags] hinzu und verwenden bitweise Operatoren, um Flags zu setzen, zu prüfen und zu entfernen.
Häufig gestellte Fragen
Ist die Lektion „Enums und [Flags]“ kostenlos?
Ja — der vollständige Text von „Enums und [Flags]“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Enums und [Flags]“?
Definieren Sie Enums mit expliziten Werten und zugrunde liegenden Typen, konvertieren und parsen Sie sie sicher und modellieren Sie kombinierbare Optionen mit [Flags]. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.
Wie lange dauert die Lektion „Enums und [Flags]“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Structs: Wertsemantik und Muster für Unveränderlichkeit
- Record-ähnliche Typen und wertbasierte Gleichheit (Muster)
- Enums und [Flags]