迭代器方法或 get 访问器可对集合执行自定义迭代。 迭代器方法使用 yield return 语句返回元素,每次返回一个。 到达 yield return 语句时,会记住当前在代码中的位置。 下次调用迭代器函数时,将从该位置重新开始执行。
可以使用 yield break 语句来终止迭代。
简单示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| static void Main() { foreach (int number in SomeNumbers()) { Console.Write(number.ToString() + " "); } Console.ReadKey(); } public static System.Collections.IEnumerable SomeNumbers() { yield return 3; yield return 5; yield return 8; }
|
迭代器方法或 get 访问器的返回类型可以是 IEnumerable、IEnumerable<T>、IEnumerator 或 IEnumerator<T>。
迭代器可用作一种方法,或一个 get 访问器。 不能在事件、实例构造函数、静>态构造函数或静态终结器中使用迭代器。
必须存在从 yield return 语句中的表达式类型到迭代器返回的 >IEnumerable<T> 类型参数的隐式转换。
在 C# 中,迭代器方法不能有任何 in 、 ref 或 out 参数。
在 C# 中, yield 不是保留字,只有在 return 或 break 关键字之前使用时才有特殊含义。