Skip to content

Flags enum

Context: Apply the [Flags] attribute to an enum to indicate that its members can be combined using bitwise operations.

[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Execute = 4,
ReadWrite = Read | Write
}
Permissions perms = Permissions.Read | Permissions.Write;
Console.WriteLine(perms.HasFlag(Permissions.Read)); // True
Console.WriteLine(perms); // Read, Write
// Bitwise operations
perms |= Permissions.Execute; // add flag
perms &= ~Permissions.Write; // remove flag

File access permissions: Use [Flags] enum for FileAccess (Read, Write, ReadWrite) and FileShare (None, Read, Write, ReadWrite, Delete).

Example: In .NET, FileAccess and FileShare are flags enums. Also RegexOptions.