``++enum++``s are usually used to identify distinct elements in a set of values. However ``++enum++``s can be treated as bit fields and bitwise operations can be used on them to combine the values. This is a good way of specifying multiple elements of set with a single value. When ``++enum++``s are used this way, it is a best practice to mark the ``++enum++`` with the ``++FlagsAttribute++``. == Noncompliant Code Example ---- enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 } // ... var x = Permissions.Read | Permissions.Write; // Noncompliant; enum is not marked with [Flags] ---- == Compliant Solution ---- [Flags] enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 } // ... var x = Permissions.Read | Permissions.Write; ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::message.adoc[] ''' == Comments And Links (visible only on this page) include::comments-and-links.adoc[] endif::env-github,rspecator-view[]