2 篇文章
foreach 背后是 IEnumerable 和 IEnumerator 两个接口:一个负责「给出迭代器」,一个负责「一个个往下走」。手写一个能被 foreach 遍历的集合,再把 foreach 自己展开一遍。
yield return 让编译器替你写迭代器:方法在每个 yield 处「暂停」,下次 MoveNext 时从原地继续。用一个手写链表演示执行顺序、yield break,以及 yield 的限制和延迟执行的坑。