bir örnegiydi bir "sonsuz" IEnumerableBir "sonsuz" IEnumerable nasıl ele alınır?
foreach(int i in Numbers().Take(10)) {
Console.WriteLine(i);
}
ve
var q = Numbers();
foreach(int i in q.Take(10)) {
Console.WriteLine(i);
}
çok iyi çalışıyor (ve sayı 0- çıktısını bildiğim
IEnumerable<int> Numbers() {
int i=0;
while(true) {
yield return unchecked(i++);
}
}
olurdu 9).
q
gibi ifadeleri kopyalarken veya işlerken herhangi bir tuzak var mı? Her zaman "tembel" olarak değerlendirildikleri gerçeğine güvenebilir miyim? Sonsuz döngü oluşturma tehlikesi var mı?
Sadece seçici olmak için, "sonsuz" örneğiniz, i = Int32.MaxValue ve i ++ yapmak istediğinizde bir istisna alamaz mı?Yoksa Int32.MinValue'ye mi geçiyor? Hmm ..... –
Haklısınız. Muhtemelen bir taşma istisnası atacaktır ... Düzenleyeceğim. – Danvil
Sadece seçici olmak için, noktanız hala karşımıza çıktı. :) Ayrıca, denedim ve Int32.MinValue için döngü yapar. OverflowException yok, bu yüzden aslında sonsuz bir döngü oldu. –