Wenn die Aufzählung in C#definiert wird, können Sie die Eigenschaft [Flags] verwenden, wenn die Aufzählung eher die Wertesatz als einen einzelnen Wert darstellt. Dieses Attribut ist besonders nützlich bei der Aufzählung des Verwendungsbetreibers.
Im Gegensatz zum universellen Missverständnis liefert das [Flags] Attribut eine lesbarere Repräsentationsform durch die -Methode. Die mit [Flags] gekennzeichnete Aufzählung gibt ihren Wert aus und der Wert wird in Form eines Vorzeichens einer Komma -Trennung angezeigt.
Der Leistungswert von 2 .ToString()
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"
<确> Die richtige Anweisung:
<取> Erhalten Sie unterschiedliche Werte:
Um die verschiedenen Werte in den Aufzählungsattributen abzurufen, können Sie mehrere Methoden verwenden:
[Flags] public enum MyColors { Yellow = 1, Green = 2, Red = 4, Blue = 8 }
verwenden <.> (. Net 4 und höhere Versionen verfügbar):
.HasFlag()
if (myProperties.AllowedColors.HasFlag(MyColor.Yellow)) { // Yellow is allowed... }
[Flags] Eigenschaften dürfen Binärwerte durch Betrieb nach Bit -Computing bedienen. Durch die Verwendung des Leistungswerts von 2 als Aufzählungswert bedeutet die zugrunde liegende Binärdauer des Wertes, dass er effiziente und aussagekräftige Berechnungen ermöglicht.
if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow) { // Yellow is allowed... }
In einigen Aufzählungen enthält es 0 Werte (normalerweise als "keine"). Es ist jedoch zu beachten, dass die Position und der Operationen, die in den Ni -Wert beteiligt sind, immer wieder 0 zurückgeben, sodass sie nicht zum Testen bestimmter Zeichen geeignet ist. Sie können einen logischen Vergleich verwenden.
Weitere Informationen und Ressourcen zu den [Flags] -attributen, dessen Verwendungs- und Entwurfsmodus finden Sie in der MSDN -Dokumentation.
Das obige ist der detaillierte Inhalt vonWie verbessert das C# [Flags] Enum -Attribut bitweise Vorgänge und die Lesbarkeit der Aufzählung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!