XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT * DIVERSES



Diverses / C#.NET Grundlagen / C#.NET Enums

C#.NET Enums

C#.NET Enums

➪ Enums sind Aufzählungen.

Auf dieser Seite:

public enum Wochentage
{
    Montag,
    Dienstag,
    Mittwoch,
    Donnerstag,
    Freitag,
    Sonnabend,
    Sonntag
}

Nun kann die Aufzählung einzeln angesprochen werden, der folgende Aufruf gegibt das Resultat Sonntag.


Console.WriteLine(Wochentage.Sonntag);

Intern wird jedem Wert der Aufzählung eine Zahl zugewiesen, der Montag hat automatisch den Wert 0.


Console.WriteLine((int)Wochentage.Montag);

Um alle Wochentage in einer Schleife anzusprechen, können Sie über die GetNames-Funktion der Enum-Klasse gehen.


foreach (string s in System.Enum.GetNames(typeof(Wochentage)))
        Console.WriteLine(s);

Die Zahlenwerte (hier: 0-6) können Sie über die GetValues-Methode der Enum-Klasse erhalten. Dabei wird jeder Einzelwert als Zahl übernommen, das erfordert, die Variable s als Integer zu deklarieren.


foreach (int s in System.Enum.GetValues(typeof(Wochentage)))
         Console.WriteLine(s);

Statt über die Enum-Klasse können Sie auch direkt mit Wochentage arbeiten.


foreach (int s in Wochentage.GetValues(typeof(Wochentage)))
         Console.WriteLine(s);

Analog können Sie mit Wochentage auch die Format-Methode der Enum-Klasse aufrufen. Als Formatierungszeichenfolge steht nur "G","g","X","x","F","f","D" oder "d" zur Verfügung. Die X-Formatierung liefert den Hexwert der Aufzählung.


for (int i = 0; i < 7; i++)
    Console.WriteLine(
        Wochentage.Format(typeof(Wochentage), i, "X"));

Das Attribut Flags

Davon abweichend, können Sie die Werte auch vordefinieren. Hier macht es Sinn, die Werte in Zweierpotenzen zu deklarieren, um verschiedene Kombinationen zu ermöglichen, die durch das Flags-Attribut (das für Enums bereit steht) elegant ausgewertet werden können.


[Flags]
public enum Wochentage
{
    Montag     = 1,
    Dienstag   = 2,
    Mittwoch   = 4,
    Donnerstag = 8,
    Freitag    = 16,
    Sonnabend  = 32,
    Sonntag    = 64
}

Der Aufruf von


Wochentage wt = Wochentage.Mittwoch | Wochentage.Sonnabend;
Console.WriteLine(wt);

... ergibt daher:


Mittwoch, Sonnabend

Ohne das Flags-Attribut würde das Ergebnis 36 lauten.

Und ob mit oder ohne Flags erhalten Sie sämtliche 127 Kombinationsmöglichkeiten durch den Aufruf von:


for (int i = 1; i < 128; i++)
     Console.WriteLine("{0}\t{1}", i, 
         Wochentage.Format(typeof(Wochentage), i, "F"));

wg / 4. April 2021



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/cs_Enums.html