La boucle foreach
en C# est un moyen pratique d’itérer sur les collections, mais elle ne fournit pas intrinsèquement l’index de l’itération en cours. Cela peut être gênant lorsque vous avez besoin à la fois de l’élément et de son index. Cet article explore deux méthodes efficaces pour récupérer l’index au sein d’une itération de type foreach
.
Table des matières
Utilisation de la méthode Select()
de LINQ
La méthode Select()
de LINQ offre un moyen concis d’obtenir à la fois l’élément et son index. Elle transforme la collection originale en une nouvelle séquence où chaque élément est associé à son index.
using System;
using System.Collections.Generic;
using System.Linq;
public class ForeachIndexExample
{
public static void Main(string[] args)
{
List<string> names = new List<string>() { "Alice", "Bob", "Charlie", "David" };
// Utilisation de Select() pour obtenir l'index et l'élément
var indexedNames = names.Select((name, index) => new { Name = name, Index = index });
// Itération sur la séquence indexée
foreach (var item in indexedNames)
{
Console.WriteLine($"Nom: {item.Name}, Index: {item.Index}");
}
}
}
Ce code crée un nouveau type anonyme contenant à la fois le nom et son index. La boucle foreach
itère ensuite sur cette nouvelle séquence, permettant d’accéder aux deux informations. Cette approche est lisible et fonctionne bien pour les collections de toute taille.
Utilisation d’une boucle for
standard
Pour des performances améliorées, notamment avec les grandes collections, une boucle for
standard offre une approche plus directe. Cela évite les frais généraux de création d’une nouvelle séquence.
using System;
using System.Collections.Generic;
public class ForeachIndexExample
{
public static void Main(string[] args)
{
List<string> names = new List<string>() { "Alice", "Bob", "Charlie", "David" };
// Utilisation d'une boucle for avec index
for (int index = 0; index < names.Count; index++)
{
string name = names[index];
Console.WriteLine($"Nom: {name}, Index: {index}");
}
}
}
Cette méthode accède directement aux éléments en utilisant leur index. Bien qu’elle n’utilise pas de boucle foreach
, elle fournit une solution plus efficace pour les grands ensembles de données.
Le choix entre ces méthodes dépend de vos priorités. La méthode Select()
offre une meilleure lisibilité, tandis que la boucle for
offre de meilleures performances pour les grandes collections. Tenez compte de la taille de vos données et de l’importance de la lisibilité lors de votre choix.