Weil sie Zweierkräfte sind und ich das kann:
var permissions = Permissions.Read | Permissions.Write;
Und vielleicht später ...
if( (permissions & Permissions.Write) == Permissions.Write )
{
// we have write access
}
Es ist ein Bitfeld, in dem jedes gesetzte Bit einer Berechtigung entspricht (oder was auch immer der aufgezählte Wert logisch entspricht). Wenn diese als definiert 1, 2, 3, ...
wären, könnten Sie auf diese Weise keine bitweisen Operatoren verwenden und aussagekräftige Ergebnisse erzielen. Um tiefer zu tauchen ...
Permissions.Read == 1 == 00000001
Permissions.Write == 2 == 00000010
Permissions.Delete == 4 == 00000100
Beachten Sie hier ein Muster? Nehmen wir nun mein ursprüngliches Beispiel, dh
var permissions = Permissions.Read | Permissions.Write;
Dann...
permissions == 00000011
Sehen? Sowohl das Read
als auch das Write
Bit sind gesetzt, und ich kann dies unabhängig überprüfen (Beachten Sie auch, dass das Delete
Bit nicht gesetzt ist und dieser Wert daher keine Berechtigung zum Löschen vermittelt).
Es ermöglicht das Speichern mehrerer Flags in einem einzigen Bitfeld.