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;
}
Nếu bạn nhận xét for
vòng lặp bên trong , nó ném ra, rõ ràng là do chúng tôi đã thay đổi bộ sưu tập.
Bây giờ nếu bạn bỏ ghi chú nó, tại sao vòng lặp này cho phép chúng tôi thêm hai mục đó? Phải mất một lúc để chạy nó như nửa phút (Trên CPU Pentium), nhưng nó không hoạt động và điều buồn cười là nó xuất ra:
Đó là một chút mong đợi, nhưng nó chỉ ra rằng chúng tôi có thể thay đổi và nó thực sự thay đổi bộ sưu tập. Bất kỳ ý tưởng tại sao hành vi này xảy ra?
int.MaxValue
lặp ...