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;
}
Se commentate il for
ciclo interno , viene generato, è ovviamente perché abbiamo apportato modifiche alla raccolta.
Ora, se lo rimuovi dal commento, perché questo ciclo ci consente di aggiungere questi due elementi? Ci vuole un po 'per eseguirlo come mezzo minuto (su CPU Pentium), ma non lancia, e la cosa divertente è che emette:
Era un po 'previsto, ma indica che possiamo cambiare e in realtà cambia la collezione. Qualche idea sul perché si verifica questo comportamento?
int.MaxValue
iterazioni ...