Why can I pass Write(1) but not Write(i)?
===

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.

[Demo to show compile error](http://ideone.com/tQjCm)

	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!?
		}
	}


