理解yield return 的工作方式

时间:2021-04-16

  yield这个词本身并不是一个关键字。也就是说,我们仍然可以用yield来命名一个变量,这对于金融界的人们来说还是很有用的。不过,yield return和yield break就是关键词组了。

  yield return是一个编译器暗示,告诉编译器要生成一个状态机。每当遇到一行含有yield return的代码时,所生成的代码就会返回那个值。其实,这是因为编译器自动生成一个枚举器。也就是说,只要还有可以返回的项,栈就不会回卷,finally块也不会被执行。当遇到最后一个项时(即,当Movement返回false时),栈就会回卷,finally块也会被执行。

  这样做的结果是,从函数头上看的话,就像是一个普通的能够返回IEnumerable<T>集合的函数一样。关键字词组yield return是迭代器模式(Iterator Pattern)的一种实现,能够将本身不是可迭代集合的对象做成可迭代集合。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章