数组的大小在创建好之后就是固定的,不能再现有数组的末尾添加新项,除非去创建一个新数组,这也意味着用于处理数组的语法比较复杂。OOP技术可以创建在内部执行大多数此类处理的类,因此简化了使用项列表或者数组的代码。
C#中的数组实现为System.Array类的实例,他只是集合类(Collection Class)中的一种类型。集合类一般用于处理对象列表,其功能比简单的数组要多,功能大多是通过实现System.Collections名称空间中的接口而获得的,因此集合的语法已经标准化了。
集合的功能(包括基本功能,例如,用[index]语法访问集合中的项)可以通过接口来实现,所以不仅可以使用基本集合类,例如System.Array,还可以创建自己的定制集合类。这些集合可以专用于要枚举的对象(即要从中建立集合的对象)。这么做的一个有点是定制的集合类可以是强化类型的。也就是说,从集合中提取项时,不需要把他们转换为正确类型。
System.Collections名称控件中的以下几个接口提供了基本的集合功能:
IEnumerable--可以迭代集合中的项。
ICollection--继承于IEnumerable,可以获取集合中项的个数,并能把项复制到一个简单的数组类型中。
IList--继承于IEnumerable和ICollection,类似于IList,但提供了可通过键值(而不是索引)访问的项的列表。
System.Array类实现了IList、ICollection和IEnumerable,但不支持IList的一些更高级功能,它表示大小固定的项列表。