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
লুপটি মন্তব্য করেন তবে তা ছোঁড়ে, এটি সম্ভবত কারণ আমরা সংগ্রহটিতে পরিবর্তন করেছি।
এখন আপনি যদি এটি আপত্তিহীন করেন তবে কেন এই লুপটি আমাদের সেই দুটি আইটেম যুক্ত করার অনুমতি দেয়? এটি আধ মিনিটের মতো চালানোর জন্য কিছুটা সময় নেয় (পেন্টিয়াম সিপিইউতে), তবে এটি ছুঁড়ে না, এবং মজার বিষয়টি এটি আউটপুট করে:
এটি কিছুটা প্রত্যাশিত ছিল, তবে এটি ইঙ্গিত করে যে আমরা পরিবর্তন করতে পারি এবং এটি আসলে সংগ্রহকে পরিবর্তন করে। কোন ধারণা কেন এই আচরণ ঘটছে?
int.MaxValue
পুনরাবৃত্তিগুলি শেষ করতে বেশ খানিকটা সময় সময় লাগে ...