标签:
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