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;
}
Jika Anda mengomentari for
loop dalam , itu akan terlempar, itu jelas karena kami melakukan perubahan pada koleksi.
Sekarang jika Anda menghapus komentar, mengapa loop ini memungkinkan kita menambahkan dua item tersebut? Dibutuhkan beberapa saat untuk menjalankannya seperti setengah menit (Pada Pentium CPU), tetapi tidak membuang, dan lucunya adalah ia mengeluarkan:
Itu sedikit diharapkan, tetapi ini menunjukkan bahwa kami dapat mengubah dan itu benar-benar mengubah koleksi. Adakah ide mengapa perilaku ini terjadi?
int.MaxValue
iterasi ...