C# Programming

Obtenir efficacement les indices dans les itérations C#

Spread the love

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *