title: How are ambiguous enum values resolved in C#?
body: <p>I checked the section of the C# language specification regarding enums, but was unable to explain the output for the following code:</p>
  
  <pre><code>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);
  }
  </code></pre>
  
  <p>It outputs:</p>
  
  <pre><code>c: 1
  c: 1
  c: 1
  d: 2
  d: 2
  d: 2
  g: 3
  g: 3
  g: 3
  k: 4
  k: 4
  k: 4
  </code></pre>
  
  <p>Now, why would it select the third "1", the first "2" and "3", but the second "4"? Is this undefined behavior, or am I missing something obvious?</p>