C#编程利器之五:集合对象(Collections)
一、数组
在实际应用中,数组又可分为:简单数组、多维数组、锯齿数组、Array数组.使用最多的应该算的简单数组和多维数组,这里我以简单数组为例简单介绍下数组的简单使用,关于的其他知识点请大家参考相关资料和书籍.
比如说我们要定义一个整型的简单数组,那应该怎么定义呢?
1classProgram
2{
3 staticvoidMain(string[]args)
4 {
5 int[]users=newint[5];
6 users[0]=10;
7 users[1]=20;
8 //
9 }
10}
这里我们是使用的基本类型(int)类型来定义的数组,在使用开发中我们还会使用到自定义类型数组,下面我就简单的说说这方面的知识.要定义自定义类型数组,那么首先就应该有个自定义类型,当然这个类型可以封其他的相关属性.OK,如下代码段:
1///<summary>
2///自定义类型User,内部封装了一个属性name.
3///</summary>
4publicclassUser
5{
6 privatestringname;
7 publicstringName
8 {
9 get{returnname;}
10 set{name=value;}
11 }
12}
如上就是一个自定义的类型,我们在其内部封装了一个name属性.那么,类型已经定义好,那我们应该如何去使用这个自定义类型去定义一个数组呢?是这样的吗?
1classProgram
2{
3 staticvoidMain(string[]args)
4 {
5 User[]user=newUser[2]; //定义User类型的数组
6 Useru=newUser();
7 u.Name="Beniao";
8 user[0]=u;
9 Console.WriteLine(user[0].Name);
10 }
11}
由于多维数组、锯齿数组、Array数组等数组在实际的开发中使用不是很多,这里就不作介绍.
二、集合对象
集合类可以组合为集合,存储Object类型的元素和泛型集合类。在.NET 2.0之前,不存在泛型。现在泛型集合类通常是集合的首选类型。泛型集合类是类型安全的,如果使用值类型,是不需要装箱操作的。如果要在集合中添加不同类型的对象,且这些对象不是相互派生的,例如在集合中添加int和string对象,就只需基于对象的集合类。
1. 列表
.NET Framework为动态列表提供了类ArrayList和List<T>。System.Collections.Generic命名空间中的类List<T>的用法非常类似于System.Collections命名空间中的ArrayList类。这个类实现了IList、ICollection和IEnumerable接口。如下代码段:
1classProgram
2{
3 staticvoidMain(string[]args)
4 {
5 //创建列表
6 ArrayListlist=newArrayList();
8 list.Add("张三");
9 //插入元素
10 list.Insert(1,"李四");
11 //访问元素
12 stringname=list[0].ToString();
13 //删除元素
14 list.RemoveAt(1);//删除索引号为1的元素|Remove(Objectobj);
15 //检索元素
16 intindex=list.IndexOf("张三"); //得到对象所在的下标
17 //排序元素
18 list.Sort(); //有多种重载
19
20 List<int>l=newList<int>(); //创建列表
21 l.Add(1); //添加元素
22 l.Add(7);
23 l.Add(3);
24 l.Add(9);
25 l.Add(6);
26 l.Add(10);
27 l.Sort();
28 foreach(int iinl)
29 {
30 Console.Write(i+"");
31 }
32
33 l.Remove(10); //删除值为10的元素
34 }
35}
关于列表的算法可以参考我以前写过的一篇文章,文章连接:列表算法
2. 队列
在.NET的System.Collections命名空间中有非泛型类Queue,在System.Collections. Generic命名空间中有泛型类Queue<T>。这两个类的功能非常类似,但泛型类是强类型化的,定义了类型T,而非泛型类基于Object类型。
在创建队列时,可以使用与List<T>类型类似的构造函数。默认的构造函数会创建一个空队列,也可以使用构造函数指定容量。在把元素添加到队列中时,容量会递增,包含4、8、16和32个元素。与List<T>类型类似,队列的容量也总是根据需要成倍增加。非泛型类Queue的默认构造函数与此不同,它会创建一个包含32项的空数组。
3.链表
链表算发其实也很简单,因为项目开发中使用频率不高,所以这里就不做详细介绍.
关于结合对象我就简单的介绍这些,另外还有如栈,字典等集合对象,在某些时候也会用到,详细大家可以查阅相关书籍和资料.
这里我推荐一本书,大家有兴趣的可以看看《C# 2005 & .NET 3.0高级编程(第5版) 》。
宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。