Accès à l'index d'itération dans C # ForEach Loops
C # foreach
Les boucles offrent un moyen concis de parcourir les collections. Cependant, l'accès directement à l'indice d'itération n'est pas intrinsèquement pris en charge. Voici plusieurs méthodes pour y parvenir:
1. Compteur manuel:
L'approche la plus simple implique un compteur incrémenté manuellement:
<code class="language-csharp">int index = 0; foreach (var item in myCollection) { // Use 'item' and 'index' index++; }</code>
2. Linq's Select
avec index:
La méthode Select
de Linq fournit une surcharge qui inclut l'index:
<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>
Cela crée un type anonyme contenant à la fois la valeur et son index.
3. Valuetuple (C # 7.0 et plus tard):
Pour améliorer les performances et éviter les allocations de tas (en particulier avec les grandes collections), utilisez ValueTuple
:
<code class="language-csharp">foreach (var (value, index) in myCollection.Select((value, index) => (value, index))) { // Access 'value' and 'index' directly }</code>
Cela exploite la déconstruction des tuples pour la syntaxe plus propre.
4. Pour la boucle (alternative):
Pour les situations nécessitant un accès à l'index, une boucle standard for
offre une solution plus directe:
<code class="language-csharp">for (int index = 0; index < myCollection.Count; index++) { var item = myCollection[index]; // Use 'item' and 'index' }</code>
Cette approche est généralement préférée lorsque l'index est crucial pour la logique de la boucle. Choisissez la méthode qui convient le mieux à vos besoins de style de codage et de performance. Pour les cas simples, un compteur manuel suffit. Pour des collections plus grandes ou des scénarios plus complexes, Linq avec ValueTuple
offre un équilibre de lisibilité et d'efficacité. La boucle for
reste une option viable lorsque la manipulation de l'index est au cœur de l'opération de la boucle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!