我们可以将foreach语句看做enumerator的消费者(consumer),而迭代器(iterator)则是enumberator的生产者(producer)。在这个例子中,我们使用一个迭代器来返回一系列的斐波那契数(其定义为数列中每个数字是其之前两个数字之和)
using System;
using System.Collections.Generic;
class Test
{
static void Main()
{
foreach (int fib in Fibs(6))
Console.Write (fib + " ");
}
static IEnumerable<int> Fibs (int fibCount)
{
for (int i = 0, prevFib = 1, curFib = 1; i < fibCount; i++)
{
yield return prevFib;
int newFib = prevFib+curFib;
prevFib = curFib;
curFib = newFib;
}
}
}
OUTPUT: 1 1 2 3 5 8