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;
}
Si comenta el for
bucle interno , arroja, obviamente es porque hicimos cambios en la colección.
Ahora, si lo descomentas, ¿por qué este bucle nos permite agregar esos dos elementos? Lleva un tiempo ejecutarlo como medio minuto (en CPU Pentium), pero no arroja, y lo curioso es que genera:
Era un poco de lo esperado, pero indica que podemos cambiar y en realidad cambia la colección. ¿Alguna idea de por qué ocurre este comportamiento?
int.MaxValue
iteraciones ...