yield(C# 参考)

转自 http://msdn.microsoft.com/zh-cn/library/9k7k7cf0.aspx

在语句中使用 yield 关键字,则指示在的方案、运算符或 get 访问器是迭代器。 使用的迭代器对集合的自定义迭代。 下面的示例演示 yield 语句的两种形式。

yield return <expression>;
yield break;

备注 :

使用一个 yield return 语句返回每个元素一个节点。

使用 foreach 语句或 LINQ 查询,则使用迭代器方法。 foreach 循环的每次迭代调用迭代器方法。 当 yield return 语句在迭代器方法时为止,expression 返回,并且,代码的当前位置保留。 当下次调用迭代器函数时执行从该位置重新启动。

可以使用 yield break 语句结束迭代。

有关迭代器的更多信息,请参见迭代器(C# 和 Visual Basic)

迭代器方法和 get 访问器

迭代器的声明必须满足以下要求:

隐式转换必须从表达式的类型。yield return 语句的提供给迭代器的返回类型。

在具有以下特点的方法不能包含 yield return 或 yield break 语句:

异常处理

yield return 语句不能位于 try-catch 块。 yield return 语句可以位于在尝试 try-finally 块语句。

yield break 语句可以位于 try 块或 catch finally 块,而不是块。

如果 foreach 主体 (在迭代器方法的外部) 引发异常,finally 在迭代器方法执行块。

转自 http://msdn.microsoft.com/zh-cn/library/9k7k7cf0.aspx

原文地址:https://www.cnblogs.com/IT-Bear/p/3173437.html