Mengakses Indeks Lelaran dalam C# Foreach Loops
foreach
gelung kerap digunakan dalam C# untuk lelaran melalui koleksi. Walau bagaimanapun, mengakses terus indeks lelaran dalam gelung foreach
standard tidak disokong secara langsung. Artikel ini menggariskan kaedah yang cekap untuk mencapai matlamat ini.
Memanfaatkan LINQ untuk Akses Indeks
KaedahLINQ Select()
menyediakan penyelesaian yang bersih. Seperti yang digambarkan dalam catatan oleh Ian Mercer di blog Phil Haack, pendekatan ini membolehkan mendapatkan semula kedua-dua item dan indeksnya:
<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 kaedah Select()
mengambil dua parameter: nilai dan indeksnya (i
). Objek tanpa nama baharu dicipta untuk memegang kedua-duanya.
Peningkatan Prestasi dengan ValueTuple (C# 7.0 dan lebih baru)
Untuk prestasi yang lebih baik, terutamanya dengan koleksi yang lebih besar, ValueTuple
menawarkan alternatif yang lebih cekap:
<code class="language-csharp">foreach (var item in Model.Select((value, i) => (value, i))) { var value = item.value; var index = item.i; }</code>
Ini menggantikan objek tanpa nama dengan ValueTuple
, mengurangkan overhed.
Kebolehbacaan yang dipertingkatkan dengan Pemusnahan (C# 7.0 dan lebih baharu)
Mempertingkatkan lagi kejelasan kod, memusnahkan tugasan memudahkan akses kepada indeks dan nilai:
<code class="language-csharp">foreach (var (value, i) in Model.Select((value, i) => (value, i))) { // Access `value` and `i` directly. }</code>
Ini menghapuskan keperluan untuk akses item.value
dan item.i
eksplisit. Kaedah ini menggabungkan faedah prestasi ValueTuple
dengan kebolehbacaan kod yang dipertingkatkan. Teknik ini menyediakan cara yang berkesan dan cekap untuk mengurus indeks lelaran dalam gelung foreach
C#.
Atas ialah kandungan terperinci Bagaimanakah Saya Mendapatkan Indeks Lelaran dalam Gelung Foreach C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!