Zugriff auf den Iterationsindex innerhalb von C#-Foreach-Schleifen
C# foreach
-Schleifen bieten eine übersichtliche Möglichkeit, Sammlungen zu durchlaufen. Der direkte Zugriff auf den Iterationsindex wird jedoch nicht grundsätzlich unterstützt. Hier sind mehrere Methoden, um dies zu erreichen:
1. Manueller Zähler:
Der einfachste Ansatz beinhaltet einen manuell inkrementierten Zähler:
<code class="language-csharp">int index = 0; foreach (var item in myCollection) { // Use 'item' and 'index' index++; }</code>
2. LINQs Select
mit Index:
Die Select
-Methode von LINQ stellt eine Überladung bereit, die den Index enthält:
<code class="language-csharp">foreach (var item in myCollection.Select((value, index) => new { Value = value, Index = index })) { var value = item.Value; var index = item.Index; // Use 'value' and 'index' }</code>
Dadurch wird ein anonymer Typ erstellt, der sowohl den Wert als auch seinen Index enthält.
3. ValueTuple (C# 7.0 und höher):
Um die Leistung zu verbessern und Heap-Zuweisungen zu vermeiden (insbesondere bei großen Sammlungen), verwenden Sie ValueTuple
:
<code class="language-csharp">foreach (var (value, index) in myCollection.Select((value, index) => (value, index))) { // Access 'value' and 'index' directly }</code>
Dies nutzt die Tupel-Dekonstruktion für eine sauberere Syntax.
4. For-Schleife (Alternative):
Für Situationen, die einen Indexzugriff erfordern, bietet eine Standardschleife for
eine direktere Lösung:
<code class="language-csharp">for (int index = 0; index < myCollection.Count; index++) { var item = myCollection[index]; // Use 'item' and 'index' }</code>
Dieser Ansatz wird im Allgemeinen bevorzugt, wenn der Index für die Logik der Schleife von entscheidender Bedeutung ist. Wählen Sie die Methode, die Ihrem Codierungsstil und Ihren Leistungsanforderungen am besten entspricht. Für einfache Fälle genügt ein Handzähler. Für größere Sammlungen oder komplexere Szenarien bietet LINQ mit ValueTuple
ein Gleichgewicht zwischen Lesbarkeit und Effizienz. Die for
-Schleife bleibt eine praktikable Option, wenn die Indexmanipulation für den Schleifenbetrieb von zentraler Bedeutung ist.
Das obige ist der detaillierte Inhalt vonWie kann ich in einer C# foreach -Schleife auf den Iterationsindex zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!