Heim >Backend-Entwicklung >C++ >Wie kann ich in einer C#-foreach-Schleife auf den aktuellen Iterationsindex zugreifen?
Abrufen des Iterationsindex in einem C# foreach
-Sloop
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.
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):
<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
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!