In C#, an enum (or enumeration type) is used to assign constant names to a group of numeric
integer values. It makes constant values more readable, for example, WeekDays.Monday is more
readable then number 0 when referring to the day in a week.
An enum is defined using the enum keyword, directly inside a namespace, class, or
structure. All the constant names can be declared inside the curly brackets and separated by a comma. The
following defines an enum for the weekdays.
enum WeekDays
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Above, the WeekDays enum declares members in each line separated by a comma.
Enum Values
If values are not assigned to enum members, then the compiler will assign integer values to each
member starting with zero by default. The first member of an enum will be 0, and the value of
each successive enum member is increased by 1.
enum WeekDays
{
Monday, // 0
Tuesday, // 1
Wednesday, // 2
Thursday, // 3
Friday, // 4
Saturday, // 5
Sunday // 6
}
You can assign different values to enum member. A change in the default value of an enum member will automatically assign incremental values to the other members sequentially.
enum Categories
{
Electronics, // 0
Food, // 1
Automotive = 6, // 6
Arts, // 7
BeautyCare, // 8
Fashion // 9
}
You can even assign different values to each member.
enum Categories
{
Electronics = 1,
Food = 5,
Automotive = 6,
Arts = 10,
BeautyCare = 11,
Fashion = 15,
WomanFashion = 15
}
The enum can be of any numeric data type such as byte, sbyte, short, ushort, int, uint, long, or ulong. However, an enum cannot be a string type.
Specify the type after enum name as : type. The following defines the byte enum.
enum Categories: byte
{
Electronics = 1,
Food = 5,
Automotive = 6,
Arts = 10,
BeautyCare = 11,
Fashion = 15
}
Access an Enum
An enum can be accessed using the dot syntax: enum.member
enum WeekDays
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Console.WriteLine(WeekDays.Monday); // Monday
Console.WriteLine(WeekDays.Tuesday); // Tuesday
Console.WriteLine(WeekDays.Wednesday); // Wednesday
Console.WriteLine(WeekDays.Thursday); // Thursday
Console.WriteLine(WeekDays.Friday); // Friday
Console.WriteLine(WeekDays.Saturday); // Saturday
Console.WriteLine(WeekDays.Sunday); // Sunday
Conversion
Explicit casting is required to convert from an enum type to its underlying integral type.
enum WeekDays
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Console.WriteLine(WeekDays.Friday); //output: Friday
int day = (int) WeekDays.Friday; // enum to int conversion
Console.WriteLine(day); //output: 4
var wd = (WeekDays) 5; // int to enum conversion
Console.WriteLine(wd);//output: Saturday
enum is an abstract class. Learn more about enum class members here.