Почему (и как) порядок Enum влияет на значение ToString?

Привет, ребята, у меня возникли проблемы с "порядком" значений перечисления. Это немного сложно объяснить, поэтому я написал код:

class Program
{
    public enum EnumA
    {
        One = 1,
        Two = One,
        Three = Two,
        Four = 4
    }

    public enum EnumB
    {
        One = 1,
        Two = One,
        Four = 4,
        Three = Two
    }

    public enum EnumC
    {
        Two = One,
        Three = Two,
        Four = 4,
        One = 1
    }

    static void Main(string[] args)
    {
        Console.WriteLine("Enum A:");
        Console.WriteLine(EnumA.One);
        Console.WriteLine(EnumA.Two);
        Console.WriteLine(EnumA.Three);
        Console.WriteLine(EnumA.Four);
        Console.WriteLine();

        Console.WriteLine("Enum B:");
        Console.WriteLine(EnumB.One);
        Console.WriteLine(EnumB.Two);
        Console.WriteLine(EnumB.Three);
        Console.WriteLine(EnumB.Four);
        Console.WriteLine();

        Console.WriteLine("Enum C:");
        Console.WriteLine(EnumC.One);
        Console.WriteLine(EnumC.Two);
        Console.WriteLine(EnumC.Three);
        Console.WriteLine(EnumC.Four);
        Console.WriteLine();

        Console.ReadLine();
    }
}

Результат:

Enum A: Два Два Два Четыре

Enum B: Три Три Три Четыре

Enum C: Один Один Один Четыре

Мой вопрос: ПОЧЕМУ !? Я не могу найти логику вывода. В большинстве случаев необходимо найти некоторую логику, поэтому я надеюсь, что вы, ребята, сможете пролить свет на эту проблему.

Я использовал VS2010 / .Net 4.0 для компиляции и запуска кода.

8
задан Kees C. Bakker 14 January 2011 в 21:14
поделиться