Как неоднозначные значения перечисления разрешаются в C #?

Я проверил раздел спецификации языка C # относительно перечислений, но не смог объяснить вывод для следующего кода:

enum en {
    a = 1, b = 1, c = 1,
    d = 2, e = 2, f = 2,
    g = 3, h = 3, i = 3,
    j = 4, k = 4, l = 4
}

en[] list = new en[] {
    en.a, en.b, en.c,
    en.d, en.e, en.f,
    en.g, en.h, en.i,
    en.j, en.k, en.l
};
foreach (en ele in list) {
    Console.WriteLine("{1}: {0}", (int)ele, ele);
}

Это выводит:

c: 1
c: 1
c: 1
d: 2
d: 2
d: 2
g: 3
g: 3
g: 3
k: 4
k: 4
k: 4

Теперь, почему он выбрал бы третью «1», первую «2» и «3», а вторую «4»? Это неопределенное поведение, или я упускаю что-то очевидное?

Ответы на вопрос(1)

Ваш ответ на вопрос