title: Why switch for enum accepts implicit conversion to 0 but no for any other integer?
body: <p>There is an:</p>
  
  <pre><code>enum SomeEnum
  {
      A = 0,
      B = 1,
      C = 2
  }
  </code></pre>
  
  <p>Now compiler allows me to write:</p>
  
  <pre><code>SomeEnum x = SomeEnum.A;
  switch(x)
  {
      case 0: // &lt;--- Considered SomeEnum.A
          break;
      case SomeEnum.B:
          break;
      case SomeEnum.C:
          break;
      default:
          break;
  }
  </code></pre>
  
  <p><code>0</code> is considered <code>SomeItems.A</code>. But I can't write:</p>
  
  <pre><code>SomeEnum x = SomeEnum.A;
  switch(x)
  {
      case 0:
          break;
      case 1: // &lt;--- Here is a compilation error.
          break;
      case SomeEnum.C:
          break;
      default:
          break;
  }
  </code></pre>
  
  <p>Why only implicit conversion exists for <code>0</code>?</p>