var ints = new List< int >( new[ ] {
1,
2,
3,
4,
5
} );
var first = true;
foreach( var v in ints ) {
if ( first ) {
for ( long i = 0 ; i < int.MaxValue ; ++i ) { //<-- The thing I iterate
ints.Add( 1 );
ints.RemoveAt( ints.Count - 1 );
}
ints.Add( 6 );
ints.Add( 7 );
}
Console.WriteLine( v );
first = false;
}
İç fordöngüyü yorumlarsanız, fırlatır, bunun sebebi koleksiyonda değişiklikler yapmış olmamızdır.
Şimdi eğer açıklamayı kaldırırsanız, bu döngü neden bu iki öğeyi eklememize izin veriyor? Yarım dakika gibi çalıştırmak biraz zaman alıyor (Pentium CPU'da), ancak fırlatmıyor ve komik olan şu çıktı:
Biraz beklenen bir şeydi, ama değiştirebileceğimizi gösteriyor ve aslında koleksiyonu değiştiriyor. Bu davranışın neden meydana geldiğine dair bir fikriniz var mı?
