码迷,mamicode.com
首页 > 其他好文 > 详细

用函数方法实现迭代器

时间:2015-04-10 15:21:19      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

  序列就是可迭代的,是一个迭代器,也就是实现了IEnumerable接口的。

  列表就是内存中的元素的集合。容易读写,通常以索引的方式访问。

  用函数方法实现迭代器

 

     private static IEnumerable<T> Sequence<T>(Func<T, T> getNext, T startValue, Func<T, bool> endReached)
        {
            if (getNext==null)   
            {
                yield break;
            }
            yield return startValue;
            T val = startValue;
            while (endReached==null||!endReached(val))
            {
                val = getNext(val);
                yield return val;
            }
        } 

 

  验证

 

  var s = Sequence(x => x + 2, 1,x=>x>=19);
            foreach (var i in s)
            {
                Console.WriteLine(i);
            }

 

  输出

 

 技术分享

 

  总结:

 

  1、序列都实现了IEnumerable接口,是迭代器。用foreach访问。

  2、函数可以作为参数传递给另一个函数,例如x=>x+2 就是委托(委托是匿名函数)。

  3、对上面Sequence函数的解释:(1)是泛型函数(2)getNext对迭代值操作,如果x=>x+2换成x=>x*3,就是对每一个迭代元素都增加3倍。

     (3)endReched是迭代结束条件。

 

用函数方法实现迭代器

标签:

原文地址:http://www.cnblogs.com/zhangyuanbo12358/p/4414563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!