• 迭代器模式


     提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。(foreach正是实现了可迭代才可用的方法)

    下方给出自定义的类,并实现可迭代的案例,体会迭代器模式。

     先给出说明:++a<0 是先加再比较 而a++<0是先比较a与0再加a  !!!!!!

     //自定义聚类
        class DieDaiList : IEnumerable
        {
            private List<object> list = new List<object>() { "n","x","j"};
            public int Length { get { return list.Count; } }
            public object GetElement(int index) { return list[index]; }
            public IEnumerator GetEnumerator()
            {
                return new DieDaiListor(this);
            }
        }
     //对应的自定义迭代器类
        class DieDaiListor : IEnumerator
        {
            private DieDaiList _diedailist;//包含自定义聚类
            private int index;//与索引(因为foreach先执行MoveNext,再执行Current,因此初始化需要设置为-1)
            public DieDaiListor(DieDaiList diedailist)
            {
                _diedailist = diedailist;
                index = -1;//先执行MoveNext,再执行Current,因此这里设置-1
            }
            public object Current
            {
                get
                {
                    return _diedailist.GetElement(index);
                }
            }
    
            public bool MoveNext()
            {
                //++a<0 是先加再比较 而a++<0是先比较a与0再加a  !!!!!!
                //先执行此,再执行Current
                if (++index< _diedailist.Length)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
    
            public void Reset()
            {
                index = -1;
            }
        }
     static void Main(string[] args)
            { 
                DieDaiList dd = new DieDaiList();
                foreach (var item in dd)
                {
                    Console.WriteLine(item);
                }
                Console.ReadKey();
            }

    迭代器的实现就是上方所书写的,套路都是一样的哦,这就是迭代器模式!

  • 相关阅读:
    c#+linux+mono+Redis集群(解决无法连接Redis的问题)
    实验楼----奇妙的音乐
    实验楼----PHP大法
    实验楼----PHP代码审计(sha1、md5)
    实验楼----变异凯撒
    storm安装
    storm问题汇总
    windows下linux子系统安装
    mongoDB学习记录
    excel vba 不可查看
  • 原文地址:https://www.cnblogs.com/ningxinjie/p/12194352.html
Copyright © 2020-2023  润新知