0%

C Sharp 补课笔记 -- 迭代器

迭代器方法或 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() + " ");
}
// Output: 3 5 8
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 关键字之前使用时才有特殊含义。

1