您的位置:首页 > 编程语言 > C#

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

2006-10-25 17:10 681 查看
转载于:http://www.kehui.net/html/article/26/26000.html

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

#结束

本人第二次写作,望各位多多支持!

以上代码只是一个粗略演示。

希望能和大家多多讨论dotNet方面技术。
QQ:14754875
论坛:http://www.shixm.com/bbs
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: