C# › Enums & Flags

How do you create a 'flags' enum that supports combining multiple values using bitwise operations?

Intermediate

Answer

Mark the enum with [Flags] and assign each member a distinct POWER-OF-TWO value, letting you safely combine multiple flags into a single value with the bitwise OR operator and check for a specific flag's presence with bitwise AND.
[Flags]
public enum Permissions {
  None = 0,
  Read = 1,
  Write = 2,
  Delete = 4,
  All = Read | Write | Delete
}
Permissions userPerms = Permissions.Read | Permissions.Write;
bool canWrite = (userPerms & Permissions.Write) == Permissions.Write; // true
Real-world example Modeling a user's combined set of permissions (read/write/delete) compactly as a single stored enum value.

Common follow-ups: What does the [Flags] attribute actually change about the enum's behavior beyond just documentation intent?