Quelles sont les règles concernant la surcharge de fonction?C# règles de surcharge de fonction
je le code suivant:
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
quand j'appelle le code ci-dessus avec:
genericFunc<DerivedFromComponent>();
Je pense que le overloadedFunction plus spécifique à appeler, mais la capture toutes les fonctions est appelée à la place , Pourquoi est-ce?. En passant par le code ci-dessus le type T est en effet DerivedFromComponent, je pensais que le CLR choisissait la meilleure correspondance possible à l'exécution!
Doh, et dans le temps qu'il m'a fallu pour écrire ce Jon Skeet a également noté dynamique. – Josh
Si seulement je pouvais obtenir la gestion de printemps pour une nouvelle copie brillante de VS2010 tous mes problèmes s'évaporeraient ... mais hélas je suis coincé avec .NET 3.5 et VS2008! –
Pour être honnête, je ne recommanderais pas d'utiliser le code ci-dessus pour résoudre le problème. Ce n'est pas un très bon exemple d'utilisation justifiée pour la résolution dynamique. – Josh