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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值