“无限” IEnumerable 的一个简单示例是
IEnumerable<int> Numbers() {
int i=0;
while(true) {
yield return unchecked(i++);
}
}
我知道
foreach(int i in Numbers().Take(10)) {
Console.WriteLine(i);
}
和
var q = Numbers();
foreach(int i in q.Take(10)) {
Console.WriteLine(i);
}
两者都可以正常工作(并打印出数字 0-9)。
但是在复制或处理表达式时是否有任何陷阱q
?我可以相信他们总是被评价为“懒惰”的事实吗?产生无限循环有什么危险吗?