c# ArrayList 的 Sort()方法的使用

关键字:ArrayList ,IComparer,接口,C#


我看见网上有人问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);


#结束

你可能感兴趣的:(c# ArrayList 的 Sort()方法的使用)