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;
}
Wenn Sie die innere for
Schleife auskommentieren, wird sie ausgelöst, weil wir offensichtlich Änderungen an der Sammlung vorgenommen haben.
Wenn Sie es nun auskommentieren, warum können wir in dieser Schleife diese beiden Elemente hinzufügen? Es dauert eine Weile, bis es wie eine halbe Minute ausgeführt wird (auf Pentium-CPU), aber es wirft nicht, und das Lustige ist, dass es Folgendes ausgibt:
Es wurde ein bisschen erwartet, aber es zeigt an, dass wir uns ändern können und es ändert tatsächlich die Sammlung. Irgendwelche Ideen, warum dieses Verhalten auftritt?
int.MaxValue
Iterationen abgeschlossen sind ...