Dalam versi C# sebelum 4.0, cuba mengubah suai senarai dalam kitaran foreach akan menyebabkan keabnormalan. Walau bagaimanapun, dalam .NET 4.0, had ini dibatalkan.
<:> Soalan:
Memandangkan kod berikut, apabila menggunakan Foreach untuk melaraskan penghitungan bersarangnya, apakah cara terbaik untuk menambah projek ke senarai projek?
Amalan terbaik:
<code class="language-csharp">foreach (var item in Enumerable) { foreach (var item2 in item.Enumerable) { item.Add(new item2); // 这行代码有问题 } }</code>
set yang digunakan dalam gelung foreach tidak dapat direka bentuk. Oleh itu, ia tidak boleh diubahsuai secara langsung semasa lelaran. Untuk mengubah suai senarai dengan selamat, disyorkan untuk menggunakan tradisional untuk gelung. Penjelasan:
Dokumen MSDN menunjukkan bahawa pernyataan foreach digunakan untuk koleksi berulang. Walaupun ia tidak menyembunyikan atau memadam item ke koleksi sumber, ia juga memberi amaran untuk tidak bergantung kepada tingkah laku ini kerana terdapat kesan sampingan yang berpotensi. Jika anda perlu mengubah suai koleksi sumber, kaedah yang disyorkan adalah untuk digunakan untuk gelung.
Koleksi serentak tidak normal:
Artikel Blog Paul Jackson yang dipetik dalam masalah menyatakan bahawa set itu dibenarkan dalam koleksi C# Concurrent. Pengecualian ini diperoleh daripada penetapan koleksi serentak, dan ia mengendalikan kesan sampingan yang berpotensi dengan cara yang berbeza. Oleh itu, peraturan ini tidak sesuai untuk pengumpulan serentak. Untuk set biasa, masih disyorkan untuk menggunakan kitaran
untuk mengelakkan masalah yang berpotensi.Atas ialah kandungan terperinci Bagaimana cara menambahkan item dengan selamat ke senarai semasa meleleh dengan gelung foreach di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!