IEnumerable与IEnumerator接口

    //IEnumerable 与 IEnumerator
    //1.公开枚举数,支持在非凡性集合上进行简单迭代,枚举器;
    //2.只有一个抽象方法:GetEnumerator();
    //3.IEnumerator 迭代器,实现访问集合的功能;
    //4.IEnumerator只有一个属性,两个方法MoveNext和Reset;
    //5.MoveNext与foreach实现循环的时候MoveNext不太安全;
    //需注意:在迭代的过程中,不能修改迭代集合,否则不安全;

    //定义一个类实现IEnumerable遍历
    public class Per : IEnumerable
    {
        private string[] names = new string[] { "A", "B", "C" };

        public IEnumerator GetEnumerator()
        {
            //调用构造函数,将数组传递过来
            return new Person(names);
  
        }
    }
    //写一个类继承IEnumerator
    public class Person : IEnumerator
    {
        //定义数组
        private string[] _name;
        //遍历时候的索引
        private int index = -1;
        //构造函数
        public Person(string[] tem)
        {
            _name = tem;
        }
        //返回当前索引指向的names数组中的元素
        public object Current
        {
            get { return _name[index]; }
        }
        //判断索引是否完成
        public bool MoveNext()
        {
            index++;
            if (index < _name.Length)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        //重置索引,便于以后遍历
        public void Reset()
        {
            index = -1;
        }
    }

           Per p1 = new Per();
            //循环输出
            foreach (string item in p1)
            {
                Console.WriteLine(item);
            }

结果:

C:\Users\Administrator\Desktop

猜你喜欢

转载自blog.csdn.net/ProteaCynaroides/article/details/88422319