c# ArrayList 的 Sort()方法的使用
2024-07-21 02:19:36
供稿:网友
关键字: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);
#结束