Je suis actuellement la lecture de Jon Skeet C de # en profondeur 2e édition et la question suivante est venu à mon esprit:Lambda à déléguer la résolution
Comment est le compilateur en mesure de choisir entre list.Sort(Comparison<T>)
et list.Sort(MyComparison<T>)
dans l'exemple suivant:
// MyComparison has the same signature as Comparison<in T>
public delegate int MyComparison<in T>(T x, T y);
public class MyList<T> : List<T>
{
// Sort is like Sort(Comparison<T>) except it takes a MyComparison<T> in parameter
public int Sort(MyComparison<T> comparison)
{
Console.WriteLine("Sort MyComparison<T>");
return -1;
}
}
MyList<Product> list = new MyList<Product>();
list.Sort((product1, product2) => product1.Name.CompareTo(product2.Name));
// Equivalent to
list.Sort(new MyComparison<Product>((product1, product2) => product1.Name.CompareTo(product2.Name)));
// But not equivalent to...
list.Sort(new Comparison<Product>((product1, product2) => product1.Name.CompareTo(product2.Name)));
Merci à l'avance
Merci beaucoup pour votre aide. (J'apprécie le livre, merci beaucoup d'avoir pris le temps de le mettre à jour). –