Warum funktioniert das erste und zweite Schreiben, aber nicht das letzte? Gibt es eine Möglichkeit, alle 3 zuzulassen und festzustellen, ob es 1, (int) 1 war oder ich übergeben habe? Und warum darf man nur den letzten? Das zweite erlaubt, aber nicht das letzte, hat mich wirklich umgehauen.
Demo zur Anzeige eines Kompilierungsfehlers
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
.