Ci-dessous, une liste l
qui contient une liste de Product
avec les propriétés Name
et Price
. La liste peut être triée par ordre alphabétique par la classe suivante ProductNameComparer
qui implémente IComparar.Comment CompareTo trier une liste?
List<Product> l = p.GetList();
l.Sort(new ProductNameComparer());
MessageBox.Show(l[0].Name);
public class ProductNameComparer : IComparer<Product>
{
public int Compare(Product x, Product y)
{
return x.Name.CompareTo(y.Name);
}
}
Je ne comprends pas comment la liste est triée. Selon MSDNCompareTo
retourne un Int32 valeur de type de inférieur à zéro, zéro, ou supérieur à zéro. Si j'ai:
string c = "Apple";
string d = "Orange";
return c.CompareTo(d)
La fonction retourne "-1".
Mais si je remplace l.Sort(-1)
au lieu de l.Sort(new ProductNameComparer())
le code ne compile pas
Aussi pourquoi ne Compare(Product x, Product y)
ne prend que deux produits comme argument et encore réussi à comparer et trier une liste (> 2) des produits?
Vous avez deux questions. Connaissez-vous déjà les bases des algorithmes de tri comme QuickSort, MergeSort, Insertion Sort? – JasonTrue