Heim >Backend-Entwicklung >C++ >Wie verbessert das C# [Flags] Enum -Attribut bitweise Vorgänge und die Lesbarkeit der Aufzählung?

Wie verbessert das C# [Flags] Enum -Attribut bitweise Vorgänge und die Lesbarkeit der Aufzählung?

Barbara Streisand
Barbara StreisandOriginal
2025-02-02 14:56:10429Durchsuche

How Does the C# [Flags] Enum Attribute Enhance Bitwise Operations and Enumeration Readability?

[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.

[Flags] Die Bedeutung des Attributs

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):

    Verwenden Sie den Positionsoperator (vor .net 4):
  • .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.
None = 0 Wert

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!

Stellungnahme:
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