Heim >Backend-Entwicklung >C++ >Wie verbessert das C# [Flags] Enum -Attribut bitweise Vorgänge und die Lesbarkeit der Aufzählung?
[Flags] Aufzählte Attribute in [ C#: Verstehen Sie seine Rolle
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()
<code class="language-csharp">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"</code>Es muss betont werden, dass das [Flags] Attribut nicht automatisch den Leistungswert von 2 der Aufzählung automatisch zuweist. Wenn der Wert des Wertes übersprungen wird, ist die Haltung der Operation in der Position falsch, da der Standardwert von 0 steigt.
Die richtige Anweisung:
Erhalten Sie unterschiedliche Werte:
Um die verschiedenen Werte in den Aufzählungsattributen abzurufen, können Sie mehrere Methoden verwenden:
<code class="language-csharp">[Flags] public enum MyColors { Yellow = 1, Green = 2, Red = 4, Blue = 8 }</code>
verwenden <.> (. Net 4 und höhere Versionen verfügbar):
.HasFlag()
<code class="language-csharp"> if (myProperties.AllowedColors.HasFlag(MyColor.Yellow)) { // Yellow is allowed... }</code>Der zugrunde liegende Mechanismus
[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.
<code class="language-csharp"> if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow) { // Yellow is allowed... }</code>Wenn das Attribut zum Beispiel Binärdateien nach dem Bit oder | rot, grün und blau verwendet wird, speichern Sie Binary 00001110.
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!