Fork me on GitHub

yield return的理解

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

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

…… 

posted @ 2013-03-21 23:49 zhanjindong 阅读(...) 评论(...) 编辑 收藏
TOP