第十一章  集合与泛型

一、System.Array介绍

1.是所有数组的基类

2.是抽象类

3.Array对象的创建

·不可使用new

·可以使用:Array myArray = Array.CreateInstance(typeof(string), 5);

二、Array类的属性和方法

1.Leng,Rank等

2.GetValue(),SetValue(),Clone(),GetLength(),CopyTo()等(int或string中也有)

  IndexOf(),Search(),Sort(),Clear(),Reverse()等(Array数组中提供)

三、集合

1.什么是集合

·与数组类似,大小可动态调整,在运行时添加或删除元素

·System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表,队列,位数组等)

2.常见集合类

3.Hashtable

·存储键值对

·属性和方法

四、ArrayList类(用来存放对象的一维数组)

1. ArrayList和Array的比较

·ArrayList是Array的优化版,但提供了集合的特色

·容量可重新分配,使用ArrayList.Capacity

·可添加,插入,移除元素

·容量成倍增加:Count值超出

2.Array

·下界可以设置,ArrayList下界始终是0

·可以有多个维,ArrayList本身始终为一维

·许多使用Array的需求都可用ArrayList实现,它支持Array的大多数方法

3. ArrayList的属性和方法

·TrimToSize()等

五、顺序列表集合

1.Queue 先进先出

2.Stack 先进后出

六、泛型

1.什么是泛型

·泛型将类型参数的概念引入.NET Framework,类型参数使得设计如下类和方法称为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化类或方法的时候

·以前类型的泛化是靠类型与全局变量基类System.Object的相互转化来实现

2.泛型的优点

 ①减少运行时错误

 ②提高运行时效率

 ·使用泛型后,避免了装箱和拆箱操作,提高了效率

3.泛型约束

4.泛型方法

七、泛型集合

·集合是一组组合在一起的类似的类型化对象

·任何类型的对象都可以被组合到Object类型的单个集合中

·许多泛型集合类型是非泛型类型的直接模拟

 ①Dictionary是Hashtable的泛型版本

  它使用泛型结构KeyValuePair而不是DictionaryEntry进行枚举

 ②List是ArrayList的泛型版本

 ③SortedDictionary泛型类是提供不同特性特点的纯字典,它没有对应的非泛型类

·foreach循环中泛型对应KeyValuePair,非泛型对应DictionaryEntry

八、总结

·多数编程语言都提供数组这种数据结构,用以存储属于相同类型的多个数据元素

·可以使用Array类的CreateInstance方法来创建Array对象,也可以直接定义数组对象

·集合可用于管理在运行时动态创建的元素项