1.枚举集合中的元素
下例用foreach语句列出一个简单数组的数据项:
int[] pins = {9,3,7,2};
foreach (int pin in pins)
{
Console.Writel ine(pin);
}
foreach极大简化了需要编写的代码,但它只能在特定情况下使用一只能 遍历可枚举集合。
什么是可枚举集合?简单地说,就是实现了System.Collections . IEnumerable接口的集合。
注意:C#的所有数组都是System.Array 类的实例。而System.Array 类是实现了IEnumerable接口的集合类。
IEnumerable接口包含一个名为GetEnumerator的方法:
IEnumerator GetEnumerator();
GetEnumerator方法应返回实现了System. Collections . IEnumerator接口的枚举器对象。枚举器对象用于遍历(枚举)集合中的元素。IEnumerator接口指定了以下属性和方法:
object Current { get; }
bool MoveNext();
vold Reset();
可将枚举器想像成指向列表中的元素的指针。指针最开始指向第一个元素之前的位置。
调用MoveNext方法,即可使指针移至列表中的下一项(第一 项); 如果能实际地移到下一项,
MoveNext方法返回true,否则返回false。
可用Current属性访问当前指向的那一项;
使用Reset方法,则可使指针回到列表第一项之前的位置。
使用集合的GetEnumerator方法创建枚举器,然后反复调用MoveNext方法,并获取Current属性的值,就可以每次在该集合中移动一-个元素的位置。这正是foreach语句所做的事情。所以,为了创建自己的可枚举集合类,就必须在自己的集合类中实现IEnumerable接口,并提供IEnumerator接口的一个实现,以便由集合类的GetEnumerator方法返回。
参考书籍:《Visual C#从入门到精通》