Perché la prima e la seconda scrittura funzionano ma non l'ultima? Esiste un modo per consentirli tutti e 3 e rilevare se fosse 1, (int) 1 o se sono passato? E davvero perché uno è permesso ma l'ultimo? Il secondo è permesso ma non l'ultimo mi fa davvero impazzire.
Demo per mostrare l'errore di compilazione
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
.