Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh mengakses indeks lelaran semasa dalam gelung c# foreach?

Bagaimanakah saya boleh mengakses indeks lelaran semasa dalam gelung c# foreach?

Barbara Streisand
Lepaskan: 2025-01-27 18:01:10
asal
572 orang telah melayarinya

How Can I Access the Current Iteration Index in a C# foreach Loop?

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:

foreach (var item in Model.Select((value, i) => new { i, value }))
{
    var value = item.value;
    var index = item.i;
}
Salin selepas log masuk

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):

foreach (var item in Model.Select((value, i) => (value, i)))
{
    var value = item.value;
    var index = item.i;
}
Salin selepas log masuk

Lebih ringkas lagi, dan memanfaatkan keupayaan pemusnahan C#, kami boleh terus mengakses nilai dan indeks:

foreach (var (value, i) in Model.Select((value, i) => (value, i)))
{
    // Access `value` and `i` directly here.
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan