title: Why can I pass 1 as a short, but not the int variable i?
body: <p>Why does the first and second Write work but not the last? Is there a way I can allow all 3 of them and detect if it was 1, (int)1 or i passed in? And really why is one allowed but the last? The second being allowed but not the last really blows my mind.</p>
  
  <p><a href="http://ideone.com/tQjCm" rel="noreferrer">Demo to show compile error</a></p>
  
  <pre><code>using System;
  class Program
  {
      public static void Write(short v) { }
      static void Main(string[] args)
      {
          Write(1);//ok
          Write((int)1);//ok
          int i=1;
          Write(i);//error!?
      }
  }
  </code></pre>