Quali sono le regole relative alla funzione Sovraccarico?C# regole di sovraccarico delle funzioni
ho il seguente codice:
public T genericFunc<T>() where T : Component, new()
{
T result = new T();
overloadedFunction(result);
}
private overloadedFunction (Component c) // catch all function
private overloadedFunction (DerivedFromComponent dfc) // specific function
quando chiamo il codice precedente con:
genericFunc<DerivedFromComponent>();
mi aspetto che l'overloadedFunction più specifica di essere chiamato, ma la cattura tutte le funzioni si chiama invece , perchè è questo?. Quando si passa attraverso il codice sopra il tipo T è davvero DerivedFromComponent, ho pensato che il CLR ha scelto la migliore corrispondenza possibile in fase di esecuzione!
Doh, e nel tempo che mi ha portato a scrivere questo Jon Skeet ha inoltre osservato dinamica. – Josh
Se solo potessi ottenere la gestione di primavera per una nuova copia brillante di VS2010 tutti i miei problemi sarebbero evaporati ... ma purtroppo sono bloccato con .NET 3.5 e VS2008! –
Per essere onesti, non consiglierei di usare il codice sopra per risolvere il problema. Non è un ottimo esempio di un uso giustificato per la risoluzione dinamica. – Josh