最终编辑
我已经选择了蒂莫西的答案,但是如果你想要一个利用C# 语句的更可爱的实现,请检查Eamon的答案:
默认情况下,LINQ查询是延迟流。
ToArray/ToList为提供了完整的缓冲,但首先它们是急切的,其次,用无限序列完成可能需要相当长的时间。
是否有任何方法将这两种行为结合起来:在生成流和缓冲值时动态执行,以便下一次查询不会触发已经被查询的元素的生成。
下面是一个基本的用例:
static IEnumerable<int> Numbers
{
get
{
int i = -1;
while (true)