首页 > 其他 > 详细

枚举器和可枚举类型

时间:2015-01-04 15:13:42      阅读:333      评论:0      收藏:0      [点我收藏+]
枚举器和可枚举类型
前面我们已经知道了使用foreach语句可以遍历数组中的元素。但是为什么那么做呢?
原因是数组按需提供了一个叫做枚举器的对象。枚举器可以依次返回请求数组中的元素。
枚举器知道项的次序并且跟踪它所在序列中的位置,然后返回请求的当前项。
获取一个对象枚举器的方法是调用对象的GetEnumerator方法。实现GetEnumerator方法的类型叫做可枚举类型。
数组是可枚举类型。
IEnumerator接口
实现了IEnumerator接口的枚举器包含3个函数成员:Current,MoveNext,Reset.
Current是返回序列中当前位置项的属性。
 它是只读属性
 它返回object类型的引用,所以可以返回任何类型。
MoveNext是把枚举器位置前进到集合中下一项的方法。它返回布尔值,指示新的位置是有效地位置还是已经
超过了序列的尾部。如果新的位置有效返回true,新的位置无效返回false.
枚举器的原始位置在序列中的第一项之前,因此MoveNext必须在第一次使用Current之前调用。
Reset是把位置重置为原始状态的方法。
IEnumerable接口
可枚举类是指实现了IEnumerable接口的类,IEnumerable接口只有有一个成员---GetEnumerator方法,他返回对象的枚举器。
using System.Collections;
class Myclass:IEnumerable
{public IEnumerator GetEnumerator{.....}
 //返回IEnumerator类型的对象
}
using System.Collections;//要加入这行代码

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] Myarray = { 10, 11, 12, 13 };//创建数组
            //System.Collections.IEnumerator ie = Myarray.GetEnumerator();//或者使用这个不用上面那个命名空间;
            IEnumerator ie = Myarray.GetEnumerator();
            while (ie.MoveNext())
            {
                int i = (int)ie.Current;
                Console.WriteLine("{0}",i);
            }
            Console.Read();
        }
    }
}
static void Main(string[] args)
        {
            int[] Myarray = { 10, 11, 12, 13 };//创建数组
            foreach(int i in Myarray)
               Console.WriteLine("{0}",i);
         
            Console.Read();
        }
上面的代码和foreach产生的效果一样的;

 

枚举器和可枚举类型

原文:http://www.cnblogs.com/leijiangtao/p/4201009.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!