下面,列表l
包含Product
列表Name
和Price
属性。 该列表可以按照以下类别ProductNameComparer
按字母顺序排列,它们实施IComparar。CompareTo如何对列表进行排序?
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);
}
}
我不明白如何排序列表。根据MSDNCompareTo
返回一个的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)的产品呢?
您在这里有两个问题。您是否已经理解排序算法的基础知识,如QuickSort,MergeSort,Insertion Sort? – JasonTrue 2011-12-16 07:29:31