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

关于c# 泛型List集合对象的用法及相关操作

2008-10-25 22:58 531 查看
今晚终于静下心来下写自己的BLOG

关于.net framework 2.0推出“泛型”,学习体会了下当中LIST<T>基本的用法及原理

由于之前的版本中,集合

CLASS A,CLASS B

//实例化A,B类对象

ArrayList list=new ArrayList();

//此参数为object value

//编译器些时,并不为检查object类型

list.add(A);list.add(B);

//当去遍历list集合对象时

foreach(A a in list)

{

console.Write((A)a);

}

运行时,程序报错,原因在于遍历list集合时转型中,有不是A对象的实例类型B

在2.0中已经解决些问题,就是“泛型”用法

CLASS A,CLASS B

//实例化A,B类对象

List<A> mylist=new List<A>();

mylist.add(a);mylist.add(b);

//此时统译时会报错,因为在声名时List<A>已经约束其集合的类型,也就是参数class A的实例

//下面我们来进行集的几中基本操作

//Comparable 集合中对象的比较排序

//如果学习之前学过C++的操作符赋重载,理解这个知识点并不难

//集合中对象比较本质是比较对象中成员属性变量的值

//编译器本身是不知道怎么样去比较的,而是需要我们自己编写代码来告诉编译器比较的规则

//在C# 中为一个类定义这样的比较规则,必须继承一个IComparable(比较)的接口,来实现些功能

//因为在此IComparable接口中

public interface IComparable

{

//些方法需要自己实现,就是比较的规则

int CompareTo(Object obj)

}

例如:

Class A:IComparable

{

//成员属性

private string _name;

public int CompareTo(object obj)

{

//判断比较对象是否是Class A对象

if(!obj is A)

{

throw new Exception("只能与Class A对象比较");

}

//将参数转换为Class A对象

A a=obj as A;

return this._name.CompareTo(a._Name);

}

}

//当一个类实现上面代码功能时

Class A a1,Class A a2;

List<A> mylist=new List<A>();

mylist.add(a1);mylist.add(a2);

//进行集合排序时

mylist.sort()

foreach(A a in mylist)

{

//此时显示的结果,为按字母升序排列

console.Write(a.name);

}

如果类中,其它属性需要比较排序,既然如此泡制既可.

2008/5/18晚
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: