The [Flags] attribute is optional, and informs the
runtime that the values in the enum can be bit-combined, and should
be decoded accordingly in the debugger or when outputting text to the
console. For example:

The System.Enum type also provides many useful
static methods for enums that allow one to determine the underlying
type of an enum, to check if a specific value is supported, to
initialize an enum from a string constant, to retrieve a list of the
valid values, and other common operations such as conversions. Here
is an example of the usage:

3.6.1 Enum Operators

The operators relevant to
enums
are:

= = != < > <= >= + - ^ & | ~
= += -= ++ -- sizeof

3.6.2 Enum Conversions

Enums may be explicitly converted to
other
enums. Enums and numeric types may be explicitly converted to one
another. A special case is the numeric literal 0,
which may be implicitly converted to an enum.