yield语句实现
我想以一种容易理解的forms来了解yield
声明的一切 。
在实现迭代器模式时,我已经阅读了yield
语句和它的简易性。 但是,大部分是非常干燥的。 我想深入了解微软如何处理回报率。
另外,你什么时候使用yield break?
yield
通过在内部build立一个状态机来实现。 它存储下一次退出的例程的当前状态,并在下一次从该状态恢复。
您可以使用Reflector来查看编译器是如何实现的。
当您想要停止返回结果时使用yield break
。 如果你没有yield break
,编译器会在函数结尾处假设一个(就像正常函数中的return;
语句)
从Raymond Chen的博客开始,
- C#中迭代器的实现及其后果(第一部分)
- C#中迭代器的实现及其后果(第2部分)
- C#中迭代器的实现及其后果(第3部分)
正如Mehrdad所说,它构build了一个状态机。
除了使用Reflector(另一个极好的build议),您可能会发现我的关于迭代器块实现的文章很有用。 如果不是finally
块,这将是相对简单的 – 但它们会带来复杂性的一个额外的维度!