0Pricing
C# Academy · Lektion

Flags-Enums und bitweise Kombinationen

Kombinieren Sie Enum-Werte mit dem Flags-Attribut.

Flags-Enums und bitweise Kombinationen ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Flags-Enums

Ein Flags-Enum stellt eine Kombination von Optionen dar. Kennzeichnen Sie es mit dem Attribut [Flags] und geben Sie jedem Member eine eigene Zweierpotenz.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        Access a = Access.Read | Access.Write;
        Console.WriteLine(a);
    }
}

Zweierpotenzen

Jedes Flag muss ein eindeutiges Bit belegen: 1, 2, 4, 8, 16. Dadurch lassen sich Werte ohne Überschneidungen kombinieren.

using System;

[Flags]
enum Perm { Read = 1, Write = 2, Delete = 4, Share = 8 }
class Program {
    static void Main() {
        Console.WriteLine((int)Perm.Share);
    }
}

Mit OR kombinieren

Verwenden Sie das bitweise OR (|), um Flags zu einem Wert zu kombinieren.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        Access a = Access.Read | Access.Execute;
        Console.WriteLine((int)a);
    }
}

Mit HasFlag prüfen

HasFlag prüft, ob ein kombinierter Wert ein bestimmtes Flag enthält.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        Access a = Access.Read | Access.Write;
        Console.WriteLine(a.HasFlag(Access.Write));
        Console.WriteLine(a.HasFlag(Access.Execute));
    }
}

Mit bitweisem AND prüfen

Sie können ein Flag auch mit & prüfen und das Ergebnis mit null vergleichen. Das ist schnell und eindeutig.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2 }
class Program {
    static void Main() {
        Access a = Access.Read | Access.Write;
        bool canWrite = (a & Access.Write) != 0;
        Console.WriteLine(canWrite);
    }
}

Ein Flag entfernen

Setzen Sie ein Flag mit AND der Komplementärmaske zurück: a &= ~Access.Write.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        Access a = Access.Read | Access.Write;
        a &= ~Access.Write;
        Console.WriteLine(a);
    }
}

Ein Flag hinzufügen

Fügen Sie ein Flag hinzu, indem Sie es per OR verknüpfen. Wenn es bereits vorhanden ist, ändert sich nichts.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        Access a = Access.Read;
        a |= Access.Execute;
        Console.WriteLine(a);
    }
}

Ein Flag umschalten

XOR (^) schaltet ein Flag in einem Schritt ein oder aus.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2 }
class Program {
    static void Main() {
        Access a = Access.Read;
        a ^= Access.Write;
        Console.WriteLine(a);
        a ^= Access.Write;
        Console.WriteLine(a);
    }
}

Warum [Flags] wichtig ist

Das Attribut [Flags] bewirkt, dass ToString kombinierte Namen anstelle einer einzelnen Zahl ausgibt.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        Access a = Access.Read | Access.Execute;
        Console.WriteLine(a);
    }
}

Kombinierte Member definieren

Sie können praktische Member definieren, die Kombinationen darstellen, beispielsweise All.

using System;

[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4, All = Read | Write | Execute }
class Program {
    static void Main() {
        Console.WriteLine((int)Access.All);
    }
}

Flags in der Praxis

Flags bilden Berechtigungen, Feature-Schalter und Optionsmengen kompakt in einer einzigen Ganzzahl ab.

using System;

[Flags]
enum Feature { None = 0, Dark = 1, Beta = 2, Sync = 4 }
class Program {
    static void Main() {
        Feature f = Feature.Dark | Feature.Sync;
        Console.WriteLine(f.HasFlag(Feature.Beta));
    }
}

Schnelltest

Testen Sie Ihr Verständnis von Flags-Enums.

Zusammenfassung

Ein [Flags]-Enum weist jedem Member eine eindeutige Zweierpotenz zu. Dadurch lassen sich Flags mit | kombinieren und mit HasFlag oder & prüfen. Sie fügen Flags mit |= hinzu, entfernen sie mit &= ~ und schalten sie mit ^= um.

Das Attribut bewirkt, dass ToString kombinierte Namen ausgibt. Außerdem können Sie praktische Member wie All definieren.

Häufig gestellte Fragen

Ist die Lektion „Flags-Enums und bitweise Kombinationen“ kostenlos?

Ja — der vollständige Text von „Flags-Enums und bitweise Kombinationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Flags-Enums und bitweise Kombinationen“?

Kombinieren Sie Enum-Werte mit dem Flags-Attribut. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Flags-Enums und bitweise Kombinationen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Enums definieren und verwenden
  2. Flags-Enums und bitweise Kombinationen
  3. Enum-Konvertierungen und Parsing
  4. Enum-Werte durchlaufen
← Zurück zu C# Academy