1724 Stimmen

Was bedeutet das [Flags] Enum-Attribut in C#?

Von Zeit zu Zeit sehe ich eine Aufzählung wie die folgende:

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

Ich verstehe nicht, was genau die [Flags] Attribut tut.

Hat jemand eine gute Erklärung oder ein Beispiel, das er veröffentlichen könnte?

1voto

kbvishnu Punkte 13406

Bitte entschuldigen Sie, falls jemandem dieses Szenario bereits aufgefallen ist. Ein perfektes Beispiel für Flaggen, die wir in der Reflexion sehen können. Ja Bindungskennzeichen ENUM .

[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum BindingFlags

Verwendung

// BindingFlags.InvokeMethod
// Call a static method.
Type t = typeof (TestClass);

Console.WriteLine();
Console.WriteLine("Invoking a static method.");
Console.WriteLine("-------------------------");
t.InvokeMember ("SayHello", BindingFlags.InvokeMethod | BindingFlags.Public | 
    BindingFlags.Static, null, null, new object [] {});

-11voto

Mukesh Pareek Punkte 49
  • Flaggen werden verwendet, wenn ein aufzählbarer Wert eine Sammlung von Enum-Mitgliedern darstellt.

  • hier verwenden wir bitweise Operatoren, | und &

  • Ejemplo

                 [Flags]
                 public enum Sides { Left=0, Right=1, Top=2, Bottom=3 }
    
                 Sides leftRight = Sides.Left | Sides.Right;
                 Console.WriteLine (leftRight);//Left, Right
    
                 string stringValue = leftRight.ToString();
                 Console.WriteLine (stringValue);//Left, Right
    
                 Sides s = Sides.Left;
                 s |= Sides.Right;
                 Console.WriteLine (s);//Left, Right
    
                 s ^= Sides.Right; // Toggles Sides.Right
                 Console.WriteLine (s); //Left

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X