【发布时间】:2011-12-16 07:25:13
【问题描述】:
下面是l 列表,其中包含Product 列表以及Name 和Price 属性。
该列表可以按字母顺序按以下类 ProductNameComparer 进行排序,该类实现 ICompar。
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) 进行比较和排序?
【问题讨论】:
-
这里有两个问题。您是否已经了解快速排序、合并排序、插入排序等排序算法的基础知识?