日期:2014-05-17  浏览次数:20911 次

怎么理解yield return。。。
为什么yield return的时候执行位置可以在调用者和被调用者之间来回变?

包含yield return的方法是在同个线程中执行的吗(测试是的,但不知道是不是正确)?如果不是同个线程,那线程同步是系统自己做的吗?如果是同个线程,为什么调用者能随时停掉这个函数执行(通过循环内break或不再调用MoveNext)?

最后。。代码的执行位置变化时,堆栈是怎么变化的?我感觉如果能描述这一点,上面的问题我就都能理解。。。

------解决方案--------------------
肯定是相同的线程了,代码中插入多线程操作的除外,但是每次return的对象肯定是同一个线程在接收。
------解决方案--------------------
用ildasm看看编译好的代码就明白了,
yield return只是一个语法糖。