Ist Flags-Attribut notwendig?

8

Ich fand mit oder ohne Flag-Attribute, ich kann Bit-Operation tun, wenn ich die folgende enum definiert

%Vor%

Ich wundere mich, warum wir Flaggen Attribut brauchen?

    
user496949 11.02.2011, 10:25
quelle

2 Antworten

14

C # behandelt sie auf die gleiche Weise, aber C # ist nicht der einzige Verbraucher:

  • PropertyGrid rendert es anders, um Kombinationen zuzulassen
  • XmlSerializer wird basierend auf diesem Flag
  • getrennte Kombinationen akzeptieren / ablehnen
  • Enum.Parse ebenfalls (aus String), und die .ToString() der Enumeration verhalten sich anders
  • viel anderer Code, der den Wert anzeigt oder verarbeitet, behandelt sie anders

Wichtiger ist jedoch, dass es eine Absichtserklärung für andere Entwickler (und Code) ist; Dies soll als Kombination behandelt werden, nicht als exklusive Werte .

    
Marc Gravell 11.02.2011, 10:29
quelle
1

Manchmal sind Bitkombinationen von enum -Werten sinnvoll (wie FileAccess - lesen, schreiben, lesen + schreiben), manchmal nicht (normalerweise). So ist [Flags] eine beschreibende Möglichkeit, in Metadaten-Informationen zu speichern, dass Bit-Operationen für diesen Aufzählungstyp sinnvoll sind . Es gibt mehrere Consumer dieses Attributs, z. B. ToString dieser Enumeration.

    
Andrey 11.02.2011 10:31
quelle

Tags und Links