See Also: FlagsAttribute Members
The FlagsAttribute class provides the consumer of a Enum the information that the enumeration is to be used as a bit-field. Additionally, when formatting a Enum, using the FlagsAttribute causes a value that is a bitwise OR combination of multiple fields to print correctly.
Bit-fields are generally used for lists of elements that might occur in combination; whereas enumeration constants are generally used for lists of mutually exclusive elements. Therefore, bit-fields are designed to be combined with the bitwise OR operator to generate unnamed values, whereas enumerated constants are not. Languages vary in their usage of bit-fields compared to enumeration constants.
This attribute can only be applied to enumerations.
The following example demonstrates the use of FlagsAttribute on the formatting of a Enum. With this attribute, the Position enumeration is used as a bit-field, and the value 3 (Top | Left) is considered a valid value for the enumeration when formatting. Without this attribute, the enumeration Color is not used as a bit-field, and the value 3 (Red | Blue) is not considered a valid value for the enumeration when formatting.
C# Example
using System;
[FlagsAttribute()]
public enum Position {
Top = 0x1,
Left = 0x2,
Bottom = 0x4,
Right = 0x8
}
//enum Color declared without FlagsAttribute
public enum Color {
Red = 0x1,
Blue = 0x2,
Yellow = 0x4
}
public class enumFormat {
public static void Main() {
Position p = Position.Top | Position.Left;
Console.WriteLine("Position: {0}", p);
Color c = Color.Red | Color.Blue;
Console.WriteLine("Color: {0}", c);
}
}
The output is
Position: Top, Left