yield return的理解

一直在实际开发中都有用到yield return,但也一直只停留在“用”的层面上,可谓一知半解。今天下班回来自己查证思考了半天,本着自己的原则一切从简提炼了一下几点(正确与否有待进一步学习):

  • IEnumerable是对IEnumerator的封装,以支持foreach语法糖。
  • IEnumerable<T>和IEnumerator<T>分别继承自IEnumerable和IEnumerator以提供强类型支持(即状态机中的“现态”是强类型)。
  • yield return是编译器对IEnumerator和IEnumerable实现的语法糖。
  • yield return 表现是实现IEnumerator的MoveNext方法,本质是实现一个状态机。
  • yield return能暂时将控制权交给外部,我比作“程序上奇点”,让你实现穿越。能达到目的:延迟计算、异步流。

…… 

作者:zhanjindong
出处:http://www.cnblogs.com/zhanjindong
个人博客:http://zhanjindong.com
关于:一个程序员而已
说明:目前的技术水平有限,博客定位于学习心得和总结。
原文地址:https://www.cnblogs.com/zhanjindong/p/2974579.html