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?
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 Enum.Parse
ebenfalls (aus String), und die .ToString()
der Enumeration verhalten sich 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 .
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.