List<T>类可以使用Sort()方法对元素排序。Sort()方法使用快速排序算法,比较所有的元素,直到整个列表排好序为止。
Sort()方法使用了几个重载的方法。可以传递给它的参数由泛型委托Comparison<T>和泛型接口IComparer<T>以及一个范围值和泛型接口IComparer<T>。
public void List<T>.Sort();
public void List<T>.Sort(Comparison<T>);
public void List<T>.Sort(IComparer<T>);
public void List<T>.Sort(Int32,Int32,IComparer<T>);
只有集合中的元素实现了IComparable接口,才能使用不带参数的Sort()方法。
自定义类Racer实现了IComparable<T>接口,可以按姓氏对赛车手排序:
racers.Sort();
如果需要按照元素类型不默认支持的方式排序,就应使用其他技术,例如,传递一个实现了IComparer<T>接口的对象。
RacerComparer类为Racer类型实现了接口IComparer<T>。这个类允许按名字、姓氏、国籍或获胜次数排序。排序的种类用内部枚举类型CompareType定义。CompareType枚举类型用RacerComparer类的构造函数设置。ICompaer<Racer>接口定义了排序所需的Compare()方法。在这个方法的实现代码中,使用了string和int类型的CompareTo()方法: