在咱们使用foreach的时候其实每个集合都是实现是IEnumerable接口的 , 若是没有实现你循环确定是行不通的, 那么假如没有实现咱们本身怎么实现呢,这个是yield是最好的帮助:express
public static IEnumerable<int> 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 语句来终止迭代。 他的好处就是不须要咱们在手动去实现迭代, 简便代码, 如此而已,固然现实中须要实现的状况并非不少code