Rumah >pembangunan bahagian belakang >C++ >Mengapakah penambahbaikan penutupan yang ditangkap C# 5.0 tidak digunakan pada gelung `untuk`?
C# 5.0: Mengapa gelung for
terlepas peningkatan penutupan yang ditangkap
C# 5.0 menangani masalah pembolehubah gelung yang ditangkap dalam gelung foreach
, memastikan pembolehubah penutupan mencerminkan dengan tepat nilai pembolehubah gelung pada masa tangkapan. Walau bagaimanapun, peningkatan ini tidak digunakan pada gelung for
, yang mengekalkan gelagat pra-5.0nya.
Sebab Peninggalan
Pengecualian yang disengajakan ini berpunca daripada perbezaan asas antara gelung for
dan foreach
:
for
gelung: Berpusatkan permulaan. Gelung for
bermula dengan pemula yang memberikan nilai kepada pembolehubah gelung. Pembolehubah ini adalah pusat kepada logik gelung, diubah suai dan diperiksa berulang kali.foreach
gelung: Berasaskan Iterator. foreach
gelung bergantung pada iterator yang menyediakan nilai untuk setiap lelaran. Pembolehubah gelung bertindak sebagai pemegang tempat, mengakses nilai lelaran.Dalam gelung for
, konsep "penyemertaan pembolehubah gelung" tunggal diselaraskan dengan sifat memfokuskan pemulaannya. Terdapat satu contoh pembolehubah gelung yang konsisten secara logik, dimulakan, dikemas kini dan mengawal penamatan gelung.
Pertimbangkan gelung for
ini:
<code class="language-csharp">for (int i = 0; i < 10; i++) { ... }</code>
Di sini, i
mengurus kiraan lelaran. Ia dimulakan kepada 0, menambah setiap lelaran dan mengawal penamatan gelung. Penutupan menangkap i
secara intuitif akan merujuk satu nilai, tanpa mengira perubahan dalam gelung i
. Ini bercanggah dengan pergantungan gelung for
pada keadaan berubah pembolehubah.
Sebaliknya, foreach
gelung tidak bergantung pada keadaan pembolehubah gelung. Mereka mengulangi koleksi tanpa memerlukan contoh pembolehubah tertentu. Oleh itu, penutupan menangkap nilai iterator pada masa tangkapan, diasingkan daripada pengubahsuaian seterusnya.
Atas ialah kandungan terperinci Mengapakah penambahbaikan penutupan yang ditangkap C# 5.0 tidak digunakan pada gelung `untuk`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!