의 사소한 예에 "무한"는 IEnumerable은"무한"IEnumerable을 처리하는 방법은 무엇입니까?
foreach(int i in Numbers().Take(10)) {
Console.WriteLine(i);
}
및
var q = Numbers();
foreach(int i in q.Take(10)) {
Console.WriteLine(i);
}
모두 잘 작동 (그리고 수 0-에서 인쇄하는 것이 내가 아는
IEnumerable<int> Numbers() {
int i=0;
while(true) {
yield return unchecked(i++);
}
}
될 것 9).
q
과 같은 표현을 복사하거나 처리 할 때 어떤 함정이 있습니까? 나는 항상 "게으른"평가를 받았다는 사실에 의지 할 수 있습니까? 무한 루프를 만들 위험이 있습니까?
"Intin32.MaxValue = i32 + ++ 일 때"무한한 "예제가 예외를 throw하지 않을까요?또는 Int32.MinValue로 이동합니까? 흠 ..... –
당신 말이 맞아요. 그것은 아마도 오버 플로우 예외를 던질 것입니다 ... 나는 그것을 편집 할 것입니다. – Danvil
여기 까다 롭지 만, 당신의 요점은 여전히 나타났습니다. :) 또한, 나는 그것을 시도하고 Int32.MinValue에 루프 않습니다. OverflowException이 없기 때문에 사실 무한 루프였습니다. –