¿Por qué funcionan la primera y la segunda escritura pero no la última? ¿Hay alguna forma en que pueda permitir a los 3 y detectar si fue 1, (int) 1 o si pasé? ¿Y realmente por qué se permite uno pero el último? El segundo permitido pero no el último realmente me deja sin aliento.
Demostración para mostrar el error de compilación
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!?
}
}
(short) i
.