Desidero utilizzare il metodo overload per ottenere risultati diversi in base a diversi tipi generici. Non funziona. Il mio codice lo mostra chiaramente.errore di sovraccarico C# per tipo generico
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
Perché My<int>
chiamate Helper.Can (Object o) piuttosto che Helper.Can (int i)?
Great.Thank you – zilong
Non sono d'accordo con l'affermazione che "i parametri di tipo generico vengono risolti in fase di esecuzione". Se così fosse, il compilatore non potrebbe dire al momento della compilazione che non è possibile ottenere un elemento int da un 'Elenco'. Quello che * è * considerato irrisolto in fase di compilazione sono occorrenze del parametro di tipo generico all'interno della classe generica. –
@ O.R.Mapper: intendevo all'interno della classe generica. – SLaks