Heim > Backend-Entwicklung > C++ > Wie verbessert das Attribut [Flags] die Enum -Funktionalität in C#?

Wie verbessert das Attribut [Flags] die Enum -Funktionalität in C#?

Barbara Streisand
Freigeben: 2025-02-02 15:01:09
Original
286 Leute haben es durchsucht

How Does the [Flags] Attribute Enhance Enum Functionality in C#?

Das [Flags] Attribut in C# Enums

verstehen

c# Enums, wenn sie mit dem Attribut [Flags] geschmückt ist, verwandeln Sie sich von der Darstellung einzelner Werte in Optionensätze. Dies ist besonders nützlich, wenn Sie bitweise Betreiber einsetzen. Lassen Sie uns:

veranschaulichen
[Flags]
public enum Options
{
    None = 0,
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option4 = 8
}
Nach dem Login kopieren

Das Attribut [Flags] aktiviert bitweise Operationen nicht auf magische Weise. Die Kernfunktion besteht darin, die Ausgabe der ToString() -Methode zu verbessern.

beobachten Sie den Unterschied:

enum Suits { Spades = 1, Clubs = 2, Diamonds = 4, Hearts = 8 }
[Flags] enum SuitsFlags { Spades = 1, Clubs = 2, Diamonds = 4, Hearts = 8 }

var str1 = (Suits.Spades | Suits.Diamonds).ToString(); // "5"
var str2 = (SuitsFlags.Spades | SuitsFlags.Diamonds).ToString(); // "Spades, Diamonds"
Nach dem Login kopieren

SuitsFlags Zeigt einzelne Flags an, während Suits die numerische Summe zeigt.

entscheidend weist [Flags] keine automatischen Kräfte von zwei zu. Sie müssen dies für korrekte Bitgewise -Operationen manuell tun. Falsche Verwendung:

[Flags]
public enum MyColors
{
    Yellow,  // 0
    Green,   // 1
    Red,     // 2
    Blue     // 3
}
Nach dem Login kopieren
richtige Verwendung:

[Flags]
public enum MyColors
{
    Yellow = 1,
    Green = 2,
    Red = 4,
    Blue = 8
}
Nach dem Login kopieren
Um zu überprüfen, ob ein Flag eingestellt ist, verwenden Sie

(für .NET 4 und später): HasFlag()

if (myProperties.AllowedColors.HasFlag(MyColor.Yellow))
{
    // Yellow is present
}
Nach dem Login kopieren
oder für ältere .NET -Versionen bitweise und operator:

if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow)
{
    // Yellow is present
}
Nach dem Login kopieren
Dies funktioniert, weil Flags Kräfte von zwei sind:

<code>Yellow: 0001
Green:  0010
Red:    0100
Blue:   1000</code>
Nach dem Login kopieren
bitweise oder kombiniert Flags; bitweise und isoliert sie.

vermeiden Sie die Verwendung von Bitweise und nach

zu überprüfen; Es wird immer falsch sein. Verwenden Sie stattdessen einen logischen Vergleich, um festzustellen, ob Flags festgelegt werden. None = 0

Das Attribut

ist ein leistungsstarkes Tool zum Verwalten von Optionensätzen in C# Enums und nutzt bitweise Vorgänge für eine effiziente Flag -Manipulation. [Flags]

Das obige ist der detaillierte Inhalt vonWie verbessert das Attribut [Flags] die Enum -Funktionalität in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage