我看见网上有人问IComparer接口的使用,于是写了个小例子,和大家一块分享。有不足之处,望不吝指正

1、建一个结构雇员的结构 private struct Eployee{   public string  name;   public int age;   public string sex;  }2、新建3个"雇员" Eployee ep1=new Eployee();  ep1.name="小张";  ep1.age=21;  ep1.sex="男"; Eployee ep2=new Eployee();  ep2.name="老李";  ep2.age=43;  ep2.sex="男"; Eployee ep3=new Eployee();  ep3.name="施施";  ep3.age=18;  ep3.sex="男";3、将3个"雇员" 加入"雇员列表";  ArrayList EmployeeList=new ArrayList();  EmployeeList.Add(ep1);  EmployeeList.Add(ep2);  EmployeeList.Add(ep3);

好了一切准备就绪,现在希望EmployeeList中得"雇员"是按年龄排序的。咋办呢?其实很简单,我们没必要自己去实现某个排序方法,冒泡或其他什么的。ArrayList 提供了我们现成的排序方法Sort();它有三个重载,不管使用哪一个,至少要你提供一个Comparer:IComparer;来告诉Sort方法 你对"雇员"们的排序依据。这个Comparer必须实现接口:System.Collections.IComparer ,该接口只有一个成员函数需要你去实现。 描述如下: [Visual Basic]Function Compare( _   ByVal x As Object, _   ByVal y As Object _) As Integer[C#]int Compare(   object x,   object y);[C++]int Compare(   Object* x,   Object* y);[JScript]function Compare(   x : Object,   y : Object) : int;(可以去参考msdn)知道了这些那我们来实现一个吧private class myEmployeeCompare:System.Collections.IComparer {   public int Compare(object x,object y){    return ((Eployee)x).age-((Eployee)y).age;    }     }因为我们比较的是“雇员”的age,所以我们可以放心的写实现语句 return ((Eployee)x).age-((Eployee)y).age;

 myEmployeeCompare EmployeeCompare=new myEmployeeCompare(); ok现在我们可以对"雇员"们按年龄排序了  EmployeeList.Sort(EmployeeCompare);

#结束

相关文章: