在我们使用foreach的时候其实每一个集合都是实现是IEnumerable接口的 , 如果没有实现你循环肯定是行不通的, 那么假如没有实现我们自己怎么实现呢,这个是yield是最好的帮助:
public static IEnumerable Power(int number, int exponent)
{
yield return 3;
yield return 5;
yield return 8;
}
static void Main(string[] args)
{
var result = Power(2, 8);
foreach (int i in result)
{
Console.Write("{0} ", i);
}
Console.ReadKey();
}
结构肯定是 3 5 8
注意: yield的返回类型一定要是IEnumerable, 通过 foreach 语句或 LINQ 查询来使用迭代器方法。 foreach 循环的每次迭代都会调用迭代器方法。 迭代器方法运行到 yield return 语句时,会返回一个 expression,并保留当前在代码中的位置。 当下次调用迭代器函数时执行从该位置重新启动。 可以使用 yield break 语句来终止迭代。 他的好处就是不需要我们在手动去实现迭代, 简便代码, 如此而已,当然现实中需要实现的情况并不是很多