Was bedeutet das Attribut [Flags] für Enumerationen (enum) in C#?
Hallo Kollegen! Ich lerne C# und bin auf das Attribut [Flags] vor der Deklaration eines enum gestoßen. Ich habe mehrere Artikel gelesen, aber nicht ganz verstanden, wofür es benötigt wird.
Hier ist ein Beispiel, das ich gefunden habe:
```csharp
[Flags]
public enum Days
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
```
Ich verstehe, dass die Werte als Zweierpotenzen (1, 2, 4, 8...) festgelegt sind, aber ich verstehe nicht:
1. Was genau macht das Attribut [Flags]? Ohne es kompiliert der Code auch.
2. Wie kombiniere ich Werte richtig? Ich habe versucht, `Days weekend = Days.Saturday | Days.Sunday;` zu schreiben, bin mir aber nicht sicher, ob das korrekt ist.
3. Wie überprüfe ich später, ob ein bestimmter Tag in einer solchen Kombination enthalten ist? Zum Beispiel, ob Saturday in der Variable weekend enthalten ist?
4. Ist es zwingend erforderlich, die Werte als Zweierpotenzen festzulegen? Kann ich einfach 0, 1, 2, 3, 4 verwenden?
Bitte erklären Sie es anhand einfacher Beispiele. Vielen Dank im Voraus!
<<>>