Enums are value types (usually Int32). Like any integer value, you can access an array with their values. Enum values are ordered starting with zero, based on their textual order.
using System;
/// <summary>
/// Enum values used to index array.
/// </summary>
enum MessageType
{
Startup,
Shutdown,
Reload,
Refresh,
Sleep,
Error,
Max
}
/// <summary>
/// Contains array of elements indexed by enums.
/// </summary>
static class Message
{
/// <summary>
/// Contains one element per enum.
/// </summary>
public static int[] _array = new int[(int)MessageType.Max];
}
class Program
{
static void Main()
{
// Assign an element using enum index.
Message._array[(int)MessageType.Startup] = 3;
// Assign an element.
Message._array[(int)MessageType.Error] = -100;
// Increment an element using enum index.
Message._array[(int)MessageType.Refresh]++;
// Decrement an element using enum index.
Message._array[(int)MessageType.Refresh]--;
// Preincrement and assign an element.
int value = ++Message._array[(int)MessageType.Shutdown];
// Loop through enums.
for (MessageType type = MessageType.Startup; type < MessageType.Max; type++)
{
Console.Write(type);
Console.Write(' ');
Console.WriteLine(Message._array[(int)type]);
}
}
}
Startup 3
Shutdown 1
Reload 0
Refresh 0
Sleep 0
Error -100