Ich möchte Methodenüberladung verwenden, um unterschiedliche Ergebnisse nach verschiedenen generischen Typen zu erhalten. Es funktioniert nicht. Mein Code zeigt es deutlich.C# Überladung Fehler für den generischen Typ
static class Helper
{
public static bool Can(int i)
{
return true;
}
public static bool Can(Object o)
{
return false;
}
}
class My<T>
{
public static bool can = Helper.Can(default(T));
}
Console.WriteLine(Helper.Can(default(int)));//True,it is OK
Console.WriteLine(My<int>.can);//false?? why the overload doesn't work
Console.WriteLine(My<Object>.can);//false
Warum My<int>
Anrufe Helper.Can (Object o) statt Helper.Can (int i)?
Great.Thank Sie – zilong
Ich würde nicht ganz mit der Aussage übereinstimmen, dass "generische Typparameter zur Laufzeit aufgelöst werden". Wenn dies der Fall war, konnte der Compiler zur Kompilierzeit nicht feststellen, dass Sie kein Int-Item von einer 'List' bekommen können. Was * zur Kompilierzeit als nicht aufgelöst gilt, sind Vorkommnisse des generischen Typparameters in der generischen Klasse. –
@ O.R.Mapper: Ich meinte innerhalb der generischen Klasse. – SLaks