Heim >Backend-Entwicklung >C++ >Wie bekomme ich den Iterationsindex in einer C# foreach -Schleife?

Wie bekomme ich den Iterationsindex in einer C# foreach -Schleife?

Susan Sarandon
Susan SarandonOriginal
2025-01-27 18:13:091021Durchsuche

How Do I Get the Iteration Index in a C# Foreach Loop?

Zugriff auf den Iterationsindex in C#-Foreach-Schleifen

foreach Schleifen werden in C# häufig zum Durchlaufen von Sammlungen verwendet. Der direkte Zugriff auf den Iterationsindex innerhalb einer Standardschleife foreach wird jedoch nicht direkt unterstützt. Dieser Artikel beschreibt effiziente Methoden, um dies zu erreichen.

Nutzung von LINQ für den Indexzugriff

LINQs Select()-Methode bietet eine saubere Lösung. Wie in einem Beitrag von Ian Mercer auf dem Blog von Phil Haack dargestellt, ermöglicht dieser Ansatz das Abrufen sowohl des Elements als auch seines Index:

<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 der Select()-Methode benötigt zwei Parameter: den Wert und seinen Index (i). Es wird ein neues anonymes Objekt erstellt, das beides enthält.

Leistungssteigerung mit ValueTuple (C# 7.0 und höher)

Für eine verbesserte Leistung, insbesondere bei größeren Sammlungen, bietet ValueTuple eine effizientere Alternative:

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

Dadurch wird das anonyme Objekt durch ein ValueTuple ersetzt, wodurch der Overhead reduziert wird.

Verbesserte Lesbarkeit durch Destrukturierung (C# 7.0 und höher)

Die Destrukturierung der Zuweisung verbessert die Klarheit des Codes weiter und vereinfacht den Zugriff auf den Index und den Wert:

<code class="language-csharp">foreach (var (value, i) in Model.Select((value, i) => (value, i)))
{
    // Access `value` and `i` directly.
}</code>

Dadurch entfällt die Notwendigkeit eines expliziten item.value- und item.i-Zugriffs. Diese Methode kombiniert die Leistungsvorteile von ValueTuple mit verbesserter Codelesbarkeit. Diese Techniken bieten effektive und effiziente Möglichkeiten zur Verwaltung von Iterationsindizes innerhalb der foreach-Schleifen von C#.

Das obige ist der detaillierte Inhalt vonWie bekomme ich den Iterationsindex in einer C# foreach -Schleife?. 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