博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

天轰穿C#-vs2010-04面向对象的编程之foreach循环【原创】

Posted on 2013-02-27 14:21  天轰穿  阅读(1353)  评论(2编辑  收藏  举报

C#集合内,foreach可以隐藏集合类型的内部实现方法,从而更加有效地处理集合类型元素。通过foreach循环语句,可以循环列举某集合内的元素,并对各元素执行一次相关的嵌入语句。

foreach的具体使用格式如下:

            foreach(类型 迭代变量 in 被迭代的表达式或集合变量)

            { 

                处理语句 

            }

其中,通过类型和迭代变量来声明语句的迭代变量。C#中的迭代变量,相当于某范围内覆盖整个嵌入语句的只读局部变量。当在foreach语句执行时,迭代变量表示当前正在为其执行迭代的集合元素。

在使用foreach语句时,必须注意如下3点。

如果运行foreach处理语句试图修改迭代变量值,或将变量值作为ref参数或out参数传递,那么都会发生编译错误。

foreach语句的表达式必须有一个从该集合的元素类型到迭代类型的显式转换,如果表达式的结果为null,则会发生运行异常。

如果在某集合内支持foreach语句,则这个集合必须能够实现System. Collections.IEnumerable接口,或者实现集合模式。实现集合模式的条件如下。

该集合包含一个public实例方法,这个方法含有签名GetEnumerator(),并且其返回值为结构、类或接口类型。

该集合包含一个public实例方法,这个方法含有签名MoveNext()和返回类型bool

该集合包含一个public类型的Current属性实例,这个属性允许读取当前的值。

如果表达式的集合类型实现了集合模式,则可以使用如下格式使用foreach语句。

            int[] al = new int[5];

            al.GetEnumerator();

在命名空间System.Collections内,集合类型ArrayListHashtableQueueSortedListStack都支持foreach语句。在下面的内容中,将通过具体的实例来说明foreach在集合类型中的应用。

本文章为天轰穿原创作品,转载请注明出处及作者。