Diverses / C#.NET Grundlagen / 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"));
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.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de