「無限」の 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
か? それらが常に「怠け者」と評価されるという事実に頼ることができますか? 無限ループを引き起こす危険はありますか?