C# Enumerationen (enum): Benannte Konstanten für lesbaren Code
Was ist eine Enumeration?
Eine Enumeration (enum) ist ein Werttyp, der eine Menge benannter ganzzahliger Konstanten definiert. Jeder Name steht für einen ganzzahligen Wert (Standard: Start bei 0, inkrementell).
Deklaration
enum Days
{
Sun, Mon, Tue, Wed, Thu, Fri, Sat
}
// Sun=0, Mon=1, ..., Sat=6
Explizite Werte zuweisen
enum ErrorCodes
{
None = 0,
Warning = 100,
Error = 200,
Critical = 500
}
Der zugrundeliegende Typ ist standardmäßig int; kann geändert werden: enum Flags : byte { ... }.
Verwendung
Days today = Days.Mon;
int dayNumber = (int)today; // 1
// Flags-Attribut für Bitmasken
[Flags]
enum FileAccess
{
Read = 1, // 0b0001
Write = 2, // 0b0010
Execute = 4, // 0b0100
All = Read | Write | Execute // 7
}
FileAccess perm = FileAccess.Read | FileAccess.Write; // 3
bool canWrite = (perm & FileAccess.Write) != 0; // true
Nützliche statische Methoden (Enum-Klasse)
Enum.GetNames(typeof(Days))– String-Array aller NamenEnum.GetValues(typeof(Days))– Array aller WerteEnum.Parse(typeof(Days), "Mon")– String zu EnumEnum.TryParse(...)– Sicheres ParsenEnum.IsDefined(typeof(Days), 7)– Prüft Existenz
Beispiel: Wochentag-Start/Ende
using System;
namespace EnumApplication
{
class Program
{
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat }
static void Main()
{
int weekStart = (int)Days.Mon; // 1
int weekEnd = (int)Days.Fri; // 5
Console.WriteLine($"Monday: {weekStart}, Friday: {weekEnd}");
Console.ReadKey();
}
}
}
Best Practices
- Einzahl-Namen für Enum-Typen (
DaynichtDays), Mehrzahl für[Flags]-Enums. - Immer
None = 0für Nicht-Flags-Enums definieren. [Flags]nur bei Bitmasken verwenden.- Explizite Werte bei öffentlichen APIs vermeiden (Versionsprobleme), außer bei Flags/Interop.
C Sprache
- C# Hello World – Ihre erste C#-Anwendung erstellen
- C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
- C# Variablen & Primitive Datentypen meistern: Der komplette Guide
- C# Operatoren – Umfassender Leitfaden zu Operatoren in C#
- C# Bitweise und Bit-Shift-Operatoren meistern: Umfassender Leitfaden
- C# Grundlagen: Eingabe und Ausgabe Essentials
- C# Ausdrücke, Anweisungen & Blöcke: Umfassender Leitfaden mit Beispielen
- C# Kommentare meistern: Arten, Best Practices und XML-Dokumentation
- C# Switch Statement meistern: Syntax, Beispiele & Best Practices
- C# Ternärer Operator: Knapper Leitfaden zu bedingten Ausdrücken