Heim >Backend-Entwicklung >C++ >Wie kann ich in einer C#-foreach-Schleife auf den aktuellen Iterationsindex zugreifen?

Wie kann ich in einer C#-foreach-Schleife auf den aktuellen Iterationsindex zugreifen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-27 18:01:10528Durchsuche

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

Abrufen des Iterationsindex in einem C# foreach -Sloop

abrufen

c#'s foreach Loop bietet keinen von Natur aus Zugriff auf den Iterationsindex. Wir können jedoch die Select -Methode von Linq geschickt anwenden, um dies zu erreichen.

Der Ansatz von

Ian Mercer, der die Überlastung von Select verwendet, die einen Lambda -Ausdruck mit Wert- und Indexparametern akzeptiert, ist hochwirksam:

<code class="language-csharp">foreach (var item in Model.Select((value, i) => new { i, value }))
{
    var value = item.value;
    var index = item.i;
}</code>

Der Lambda -Ausdruck (value, i) => new { i, value } erstellt ein anonymer Objekt, das sowohl das Element (value) als auch seinen Index enthält (i).

Für eine bessere Leistung und um unnötige Haufen Zuweisungen (insbesondere bei großen Sammlungen) zu vermeiden, sollten Sie ValueTuple (ab C# 7.0 verfügbar):

erhältlich erwägen:
<code class="language-csharp">foreach (var item in Model.Select((value, i) => (value, i)))
{
    var value = item.value;
    var index = item.i;
}</code>

Noch prägnanter und nutzt die Zerstörungsfunktionen von C#, wir können direkt auf den Wert und den Index zugreifen:
<code class="language-csharp">foreach (var (value, i) in Model.Select((value, i) => (value, i)))
{
    // Access `value` and `i` directly here.
}</code>

foreach Diese Methoden ermöglichen es Ihnen effektiv, den aktuellen Iterationsindex zu erhalten, während Sie eine

-Schoption verwenden, wodurch Sie eine höhere Kontrolle und Flexibilität in Ihrem Code bieten.

Das obige ist der detaillierte Inhalt vonWie kann ich in einer C#-foreach-Schleife auf den aktuellen Iterationsindex zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn