Dlaczego pierwsza i druga funkcja Write działają, a nie ostatnia? Czy istnieje sposób, w jaki mogę zezwolić na wszystkie 3 z nich i wykryć, czy był to 1, (int) 1, czy też przeszedłem? I naprawdę, dlaczego jeden jest dozwolony, ale ostatni? Drugie pozwolenie, ale nie ostatnie, naprawdę zaskakuje mnie.
Demo pokazujące błąd kompilacji
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
.