yield语句实现

我想以易懂的形式了解关于yield声明的所有内容。

在实现迭代器模式时,我已经阅读了yield语句和它的简易性。 但是,大部分都很干燥。 我想了解一下,看看微软如何处理回报率。

另外,你什么时候使用yield break?


yield通过在内部构建状态机来工作。 它存储例程退出时的当前状态,并在下一次从该状态恢复。

您可以使用Reflector来了解编译器如何实现它。

当您想要停止返回结果时使用yield break 。 如果你没有yield break ,编译器会在函数结尾处假设一个(就像正常函数中的return;语句)


以下是Raymond Chen博客的一个开始:

  • C#中迭代器的实现及其后果(第1部分)
  • C#中迭代器的实现及其后果(第2部分)
  • C#中迭代器的实现及其后果(第3部分)

  • 正如Mehrdad所说,它构建了一个状态机。

    除了使用Reflector(另一个极好的建议),你可能会发现我的关于迭代器块实现的文章很有用。 如果它不是finally块,那将是相对简单的 - 但它们会带来复杂度的一个额外维度!

    链接地址: http://www.djcxy.com/p/1587.html

    上一篇: yield statement implementation

    下一篇: Meaning of @classmethod and @staticmethod for beginner?