Ниже приведен список l
, который содержит список Product
с Name
и Price
свойствами.Список может быть отсортирован по алфавиту следующим классом ProductNameComparer
, который реализует IComparar .
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);
}
}
Я не понимаю, как сортируется список.Согласно MSDN CompareTo
возвращает значение типа Int32 , равное меньше нуля , нулю или больше нуля .Если у меня есть:
string c = "Apple";
string d = "Orange";
return c.CompareTo(d)
Функция вернет " -1 ".
Но если я заменю l.Sort(-1)
вместо l.Sort(new ProductNameComparer())
, код не скомпилируется
Кроме того, почему Compare(Product x, Product y)
принимает только два продукта в качестве аргумента и все же сумел сравнить и отсортироватьсписок (> 2) товаров?