C#学习笔记(八):集合
2006-02-19 14:30
246 查看
数组最大的限制就是一旦创建好数组,它们的大小就是固定的,不能在现有的数组末尾添加新项目,除非创建一个新的数组。
C#中的数组是作为System.Array类的实例来执行的,它们只是集合类中的一种。集合类一般用于处理对象列表,其功能要比简单数组要多,这些功能是通过执行System.Collections名称空间中的接口而实现的,因此集合的语法已经标准化了。
在System.Collections名称空间中有许多接口都提供了基本的集合功能:
1.IEnumerable提供了循环集合中项目的功能。
2.ICollection(继承于IEnumerable)可以获取集合中项目的个数,并能把项目复制到一个简单的数组类型中。
3.IList(继承于IEnumerable和ICollection)提供了集合的项目列表,并可以访问这些项目,以及其他一些与项目列表相关的功能。
4.IDictionary(继承于IEnumerable和ICollection)类似于IList,但提供了可通过键码值而不是索引访问的项目列表。
System.Array类继承了IList,ICollection和IEnumerable,但不支持IList的一些更高级的功能,表示大小固定的一个项目列表。
System.Collections.ArrayList也执行IList,ICollection和IEnumerable接口,但执行的方式比System.Array更复杂。数组的大小是固定的(不能增加或删除元素),而这个类可以用于表示大小可变的项目列表。
可以从一个类派生自己的集合System.Collections.CollectionBase(强类型集合),CollectionBase提供了两个受保护的属性,它们可以访问存储的对象本身。List可以通过IList接口访问项目,InnerList则是用于存储项目的ArrayList对象。
在为一个集合类添加索引后,因为IList.List属性返回一个System.Object对象,所以在返回时需要进行显式数据类型转换。
public class Animals : CollectionBase
{
public Animal this[int animalIndex]
{
get{return (Animal)List[animalIndex];}
set{List[animalIndex] = value;}
}
}
这样我们就为这个索引符定义了一个类型,使用该索引符访问一个项目时,就可以得到这个类型:
animalCollection[0].Feed();
而不需要读取出项目后在进行相应的类型转换:
((Animal)animalCollection[0]).Feed();
C#中的数组是作为System.Array类的实例来执行的,它们只是集合类中的一种。集合类一般用于处理对象列表,其功能要比简单数组要多,这些功能是通过执行System.Collections名称空间中的接口而实现的,因此集合的语法已经标准化了。
在System.Collections名称空间中有许多接口都提供了基本的集合功能:
1.IEnumerable提供了循环集合中项目的功能。
2.ICollection(继承于IEnumerable)可以获取集合中项目的个数,并能把项目复制到一个简单的数组类型中。
3.IList(继承于IEnumerable和ICollection)提供了集合的项目列表,并可以访问这些项目,以及其他一些与项目列表相关的功能。
4.IDictionary(继承于IEnumerable和ICollection)类似于IList,但提供了可通过键码值而不是索引访问的项目列表。
System.Array类继承了IList,ICollection和IEnumerable,但不支持IList的一些更高级的功能,表示大小固定的一个项目列表。
System.Collections.ArrayList也执行IList,ICollection和IEnumerable接口,但执行的方式比System.Array更复杂。数组的大小是固定的(不能增加或删除元素),而这个类可以用于表示大小可变的项目列表。
可以从一个类派生自己的集合System.Collections.CollectionBase(强类型集合),CollectionBase提供了两个受保护的属性,它们可以访问存储的对象本身。List可以通过IList接口访问项目,InnerList则是用于存储项目的ArrayList对象。
在为一个集合类添加索引后,因为IList.List属性返回一个System.Object对象,所以在返回时需要进行显式数据类型转换。
public class Animals : CollectionBase
{
public Animal this[int animalIndex]
{
get{return (Animal)List[animalIndex];}
set{List[animalIndex] = value;}
}
}
这样我们就为这个索引符定义了一个类型,使用该索引符访问一个项目时,就可以得到这个类型:
animalCollection[0].Feed();
而不需要读取出项目后在进行相应的类型转换:
((Animal)animalCollection[0]).Feed();
相关文章推荐
- C#中的集合学习笔记
- c#经典入门学习笔记-定义集合
- C#学习笔记-接口,集合与泛型
- 【005】◀▶ C#学习笔记(四)(集合)
- C#学习笔记(七)—–集合--ICollection和Ilist接口
- C# 学习笔记(三) ForEach遍历集合
- [C#]C#学习笔记-接口,集合与泛型
- c#经典入门学习笔记-定义集合
- C#学习笔记之集合(入门经典 11.)
- 精通C#:Chapter9 集合与泛型-学习笔记
- C#学习笔记集合类型之Hashtable、Dictionary和SortedList(2)
- C#学习笔记集合类型之数组(3)
- 新手菜鸟学习C#的笔记总结 之数组与集合(上)
- C#学习笔记(八):集合
- C#学习笔记(八):集合
- C#学习笔记之Hashtable集合
- 学习笔记 3 C# 数组,集合
- C#回顾学习笔记三十五:泛型集合List
- C#学习笔记之ArrayList集合
- C#学习笔记 常用的集合