Fork me on GitHub

手动书写小代码-foreach实现机制

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace 枚举的实现机制
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 1,2,3,4,6};
            IEnumerator ie = arr.GetEnumerator();
            while(ie.MoveNext()==true)
            {
                int i = (int)ie.Current;
                Console.WriteLine(i);
            }
            Console.ReadLine();
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace 详细实现机制
{
    class ColorEnumerator:IEnumerator//实现IEnumerator接口
    {
        string[] Colors;
        int Position = -1;
        //实现Current方法
        public object Current
        {
            get
            { 
                if(Position==-1)
                {
                    throw new InvalidOperationException();//当前状态无效是引发的异常
                }
                else if(Position==Colors.Length)
                {
                    throw new InvalidOperationException();
                }
                return Colors[Position];
            }
        }
        public bool MoveNext()
        {
            if (Position < Colors.Length - 1)
            {
                Position++;
                return true;
            }
            else
            {
                return false;
            }
        }
        public void Reset()
        {
            Position = -1;
        }
        public ColorEnumerator(string[]theColors)
        { 
            Colors=new string[theColors.Length];
            for (int i = 0; i < theColors.Length;i++ )
            {
                Colors[i]=theColors[i];
                Console.WriteLine(Colors[i]);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 详细实现机制
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] arr = { "Red", "Blue", "Yellow", "Green", "Gray", "Orange" };
            ColorEnumerator color = new ColorEnumerator(arr);
            Console.ReadKey();
        }
    }
}

 

posted @ 2013-07-07 09:28  种花生的读书人  阅读(588)  评论(0编辑  收藏  举报

该博客仅作为记录笔记,转载随意