Enum In C# - ProgramIdea

Enum in C#


An enum or enumeration is a type that consists of a set of named constants.

When we define set of variables list in enum then compiler assigns an integer value to the each members of the enum list starting from 0 and incrementing by one for each successive member in the enum list. This is default behaviour. We can initialize members with your own value to override the default behaviour.

// Define enum - For days of week
enum enumDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

// Default integer value of Monday = 0 and therefore
//Tuesday=1, Wednesday=2, Thursday=3, Friday=4, Saturday=5, Sunday=6

By default the enum uses an underlying data type of integer to present the list values. We can change default integer underlying to other data type like: byte, sbyte, short, unshort, uint, long, ulong only. See below examples:

// define byte data type for underlying
enum enumDays : byte  { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
    
// define short data type for underlying
enum enumDays : short  { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
    
// define long data type for underlying
enum enumDays : long  { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

Override the default value of enum

We can also define set of enum list with specific values means we can override the default value

enum enumDays
{
    Monday = 10,
    Tuesday = 11,
    Wednesday = 12,
    Thursday = 13,
    Friday = 14,
    Saturday = 15,
    Sunday = 16
};

Get all constant names from enum

enum enumDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

static void Main(string[] args)
{
    foreach (string name in Enum.GetNames(typeof(enumDays)))
    {
        Console.Write(name);
    }  
}

// Output:
// Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Get all constant values and names from enum

enum enumDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

static void Main(string[] args)
{
    foreach (int value in Enum .GetValues(typeof(enumDays)))
    {
        Console.WriteLine(value + " - " + (enumDays)value);

    }
}

// Output:
// 0 - Monday
// 1 - Tuesday
// 2 - Wednesday
// 3 - Thursday
// 4 - Friday
// 5 - Saturday
// 6 - Sunday

Get a constant name by value from enum

enum enumDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

static void Main(string[] args)
{
    // Get enum constant name which is at index 5
    string dayName = Enum.GetName(typeof(enumDays ), 5);
    Console.WriteLine(dayName);               
}

// Output:
// Saturday

Get a value by name from enum

enum enumDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

static void Main(string[] args)
{
    // Get enum constant value of Friday
    int value = (int)Enum.Parse(typeof(enumDays ), "Friday");
    Console.WriteLine(value);             
} 

// Output:
// 4

Bind dropdownlist from enum in asp.net

var data = from x in Enum.GetNames(typeof(enumDays))
            select new { Text = x, Value = (int)Enum.Parse(typeof(enumDays ), x) };

DropDownList1.DataSource = data;
DropDownList1.DataValueField = "Value";
DropDownList1.DataTextField = "Text";
DropDownList1.DataBind();