title: Unable to implicitly convert value from enum even though the underlying type is specified
body: <p>In the following code sample I define an enum and specify its underlying type as byte. I then attempt to assign to a byte value and switch on the enum's values but I get an error: <code>Cannot implicitly convert type 'CmdlnFlags' to 'byte'. An explicit conversion exists (are you missing a cast?)</code></p>
  
  <p>The code:</p>
  
  <pre><code>using System;
  
  public enum CmdlnFlags: byte {
      ValA = (byte)'a',
      ValB = (byte)'b',
  }
  
  public class Sample {
      public static void Main() {
          byte switchByte = CmdlnFlags.ValB;
          switch (switchByte) {
              case CmdlnFlags.ValA: Console.WriteLine('A'); break;
              case CmdlnFlags.ValB: Console.WriteLine('B'); break;
          }
          Console.ReadKey();
      }
  }
  </code></pre>
  
  <p>It's easy enough to fix, just cast to byte, but why do I have to cast if the underlying type is specified for the enum? What's the point of specifying an underlying type if you have to cast anyway?</p>
  
  <p>If I cast, everything works. Example:</p>
  
  <pre><code>        byte switchByte = (byte)CmdlnFlags.ValB;
          switch (switchByte) {
              case (byte)CmdlnFlags.ValA: Console.WriteLine('A'); break;
              case (byte)CmdlnFlags.ValB: Console.WriteLine('B'); break;
          }
  </code></pre>