下面是一个l
包含Product
withName
和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)进行比较和排序?