Wednesday, 7 December 2016

29 C# Enumerations

Enumerations

Enumerations are special sets of named values which all maps to a set of numbers, usually integers. They come in handy when you wish to be able to choose between a set of constant values, and with each possible value relating to a number, they can be used in a wide range of situations. As you will see in our example, enumerations are defined above classes, inside our namespace. This means we can use enumerations from all classes within the same namespace. 

Here is an example of a simple enumeration to show what they are all about.
public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
All of these possible values correspond to a number. If we don't set them specifically, the first value is equal to 0, the next one to 1, and so on. The following piece of code will prove this, as well as show how we use one of the possible values from the enum:
using System;

namespace ConsoleApplication1
{
    public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

    class Program
    {
        static void Main(string[] args)
        {
            Days day = Days.Monday;
            Console.WriteLine((int)day);
            Console.ReadLine();
        }
    }
}
The output will be zero, because the Monday value maps directly to the number zero. Obviously we can change that - change the line to something like this:
public enum Days { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
If you run our code again, you will see that the Monday now equals 1 instead of 0. All of the other values will be one number higher as well as a result. You can assign other numbers to the other values as well. Because of the direct mapping to a number, you can use numbers to get a corresponding value from the enumeration as well, like this:
Days day = (Days)5;
Console.WriteLine(day);
Console.ReadLine();
Another cool feature of enumerations is the fact that you can a string representation of the values as well. Change the above example to something like this:
static void Main(string[] args)
{
    string[] values = Enum.GetNames(typeof(Days));
    foreach(string s in values)
        Console.WriteLine(s);
    
    Console.ReadLine();
}
The Enum class contains a bunch of useful methods for working with enumerations.

No comments:

Post a Comment