Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengakses indeks lelaran semasa dalam gelung c# foreach?
Mengambil semula Indeks Lelaran dalam C# foreach
Gelung
Gelung foreach
C# tidak semestinya menyediakan akses kepada indeks lelaran. Walau bagaimanapun, kita boleh menggunakan kaedah Select
LINQ dengan bijak untuk mencapainya.
Pendekatan Ian Mercer, menggunakan lebihan Select
yang menerima ungkapan lambda dengan nilai dan parameter indeks, adalah sangat berkesan:
<code class="language-csharp">foreach (var item in Model.Select((value, i) => new { i, value })) { var value = item.value; var index = item.i; }</code>
Ungkapan lambda (value, i) => new { i, value }
mencipta objek tanpa nama yang mengandungi kedua-dua item (value
) dan indeksnya (i
).
Untuk prestasi yang lebih baik dan untuk mengelakkan peruntukan timbunan yang tidak perlu (terutamanya berfaedah dengan koleksi yang besar), pertimbangkan untuk menggunakan ValueTuple
(tersedia dari C# 7.0 dan seterusnya):
<code class="language-csharp">foreach (var item in Model.Select((value, i) => (value, i))) { var value = item.value; var index = item.i; }</code>
Lebih ringkas lagi, dan memanfaatkan keupayaan pemusnahan C#, kami boleh terus mengakses nilai dan indeks:
<code class="language-csharp">foreach (var (value, i) in Model.Select((value, i) => (value, i))) { // Access `value` and `i` directly here. }</code>
Kaedah ini dengan berkesan membolehkan anda memperoleh indeks lelaran semasa semasa menggunakan gelung foreach
, memberikan kawalan dan fleksibiliti yang lebih besar dalam kod anda.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengakses indeks lelaran semasa dalam gelung c# foreach?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!