[ Team LiB ] |
3.6 Enumsattributes? access-modifier? new? enum enum-name [ : integer-type ]? { [attributes? enum-member-name [ = value ]? ]* } Enums specify a group of named numeric constants: public enum Direction {North, East, West, South} Unlike in C, enum members must be used with the enum type name. This resolves naming conflicts and makes code clearer: Direction walls = Direction.East; By default, enums are assigned integer constants 0, 1, 2, etc. You may optionally specify an alternative numeric type to base your enum on, and explicitly specify values for each enum member: [Flags] public enum Direction : byte { North=1, East=2, West=4, South=8 } Direction walls = Direction.North | Direction.West; if((walls & Direction.North) != 0) System.Console.WriteLine("Can't go north!"); 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: Console.WriteLine(walls.Format( )); // Displays "North|West" Console.WriteLine(walls); // Calls walls.ToString, displays "5" 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: using System; public enum Toggle : byte { Off=0, On=1 } class Test { static void Main( ) { Type t = Enum.GetUnderlyingType(typeof(Toggle)); Console.WriteLine(t); // Prints "Byte" bool bDimmed = Enum.IsDefined(typeof(Toggle), "Dimmed"); Console.WriteLine(bDimmed); // Prints "False" Toggle tog =(Toggle)Enum.Parse(typeof(Toggle), "On"); Console.WriteLine(Enum.Format(typeof(Toggle), tog, "D")); // Prints "1" Console.WriteLine(tog); // Prints "On" object[ ] oa = Enum.GetValues(typeof(Toggle)); foreach(Toggle toggle in oa) // Prints "On=1, Off=0" Console.WriteLine("{0}={1}", toggle,Enum.Format(typeof(Toggle), toggle, "D")); } } 3.6.1 Enum OperatorsThe operators relevant to enums are: = = != < > <= >= + - ^ & | ~ = += -= ++ -- sizeof 3.6.2 Enum ConversionsEnums 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. |
[ Team LiB ] |