public class FlagsAttribute : Attribute
Object
Attribute
FlagsAttribute
mscorlib
BCL
Indicates that the Enum targeted by the current attribute is declared as a bit-field.
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.[Note: 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.
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
Color: 3
AttributeUsageAttribute(AttributeTargets.Enum, AllowMultiple=false, Inherited=false)
System Namespace
FlagsAttribute Constructors
public FlagsAttribute();
Constructs a new instance of the FlagsAttribute class.
System.FlagsAttribute Class, System Namespace