English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Enumeration (Enum)

In C#, die enum (枚举类型) dient dazu, Konstantenamen einer Gruppe von ganzzahligen Integer-Werten zuzuweisen. Sie macht Konstantenwerte lesbarer, z.B. ist die Lesbarkeit von WeekDays.Monday beim Bezug auf einen bestimmten Tag der Woche lesbarer als die Zahl 0.

Enumerationen werden direkt mit dem enum Schlüsselwort in einem Namensraum, einer Klasse oder einer Struktur definiert. Alle Konstantennamen können innerhalb der Klammern deklariert und durch Kommas getrennt werden. Nachfolgend wird die Enumeration der Arbeitstage definiert.

enum WeekDays
{
    Montag,
    Dienstag,
    Mittwoch,
    Donnerstag,
    Freitag,
    Samstag,
    Sonntag
}

Oben, die Enumeration WeekDays wird in jeder Zeile deklariert, und die Elemente werden durch Kommas getrennt.

Enumerationswert

Falls kein Wert einem Enumerationselement zugewiesen wird, wird der Compiler standardmäßig jedem Element einen Integerwert (ab null beginnend) zuweisen.1.

enum WeekDays
{
    Montag,     // 0
    Dienstag,    // 1
    Mittwoch,  // 2
    Donnerstag,   // 3
    Freitag,     // 4
    Samstag,   // 5
    Sonntag      // 6
}

Man kann jedem Enumerationselement verschiedene Werte zuweisen. Ändert man den Standardwert eines Enumerationselements, werden die Werte automatisch in aufsteigender Reihenfolge auf die anderen Elemente verteilt.

enum Categories
{
    Electronics,    // 0
    Food,           // 1
    Automotive = 6, // 6
    Arts,           // 7
    BeautyCare,     // 8
    Fashion         // 9
}

Man kann sogar jedem Element verschiedene Werte zuweisen.

enum Categories
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15,
    WomanFashion = 15
}

Enumerationen können beliebige numerische Datentypen sein, z.B. byte, sbyte, short, ushort, int, uint, long oder ulong. Enumerationen können jedoch nicht vom Typ String sein.

Geben Sie nach dem Enumeration Namen den Typ als :type an. Nachfolgend wird eine Byte Enumeration definiert.

enum Categories: byte
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15
}

Ein Enumeration zugreifen

Man kann Punktsyntax verwenden: enum.member, um Enumerationen anzugreifen

enum WeekDays
{
    Montag, 
    Dienstag,
    Mittwoch,
    Donnerstag, 
    Freitag, 
    Samstag,
    Sonntag 
}
Console.WriteLine(WeekDays.Monday); // Montag
Console.WriteLine(WeekDays.Tuesday); // Dienstag
Console.WriteLine(WeekDays.Wednesday); // Mittwoch
Console.WriteLine(WeekDays.Thursday); // Donnerstag
Console.WriteLine(WeekDays.Friday); // Freitag
Console.WriteLine(WeekDays.Saturday); // Samstag
Console.WriteLine(WeekDays.Sunday); // Sonntag

Enumeration Konvertierung

Die Konvertierung von Enumerationstypen in ihre zugrunde liegenden Integer-Typen erfordert eine explizite强制转换.

enum WeekDays
{
    Montag, 
    Dienstag,
    Mittwoch,
    Donnerstag, 
    Freitag, 
    Samstag,
    Sonntag 
}
Console.WriteLine(WeekDays.Friday); //Ausgabe: Freitag 
int day = (int) WeekDays.Friday; // Umwandlung von Enumeration in int
Console.WriteLine(day); //Ausgabe:4 
var wd = (WeekDays) 5; // Umwandlung von int in Enumeration
Console.WriteLine(wd);//Ausgabe: Samstag

enum ist eine abstrakte Klasse.