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;
}
หากคุณแสดงความคิดเห็นเกี่ยวกับfor
วงในมันจะพ่นออกมาเห็นได้ชัดว่าเป็นเพราะเราเปลี่ยนแปลงคอลเล็กชัน
ตอนนี้ถ้าคุณไม่ใส่ความคิดเห็นทำไมลูปนี้ถึงอนุญาตให้เราเพิ่มสองรายการนั้น? มันใช้เวลาสักครู่ในการรันเหมือนครึ่งนาที (บน Pentium CPU) แต่มันไม่โยนและสิ่งที่ตลกคือมันส่งออก:
มันค่อนข้างคาดหวัง แต่มันบ่งบอกว่าเราเปลี่ยนได้และมันเปลี่ยนคอลเลกชั่นได้จริง มีความคิดว่าเหตุใดจึงเกิดพฤติกรรมเช่นนี้
int.MaxValue
ทำซ้ำให้เสร็จ...