Enums
attributes
?
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 can 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. It 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 you 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:
using System; public enum Toggle : byte { Off=0, On=1 } class TestEnum ...
Get C# Essentials now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.