C# Programming

Obtendo Índices Eficientemente em Iterações C#

Spread the love

O loop foreach em C# é uma maneira conveniente de iterar sobre coleções, mas não fornece intrinsecamente o índice da iteração atual. Isso pode ser inconveniente quando você precisa do elemento e de seu índice. Este artigo explora dois métodos eficazes para recuperar o índice dentro de uma iteração do tipo foreach.

Sumário

Usando o método Select() do LINQ

O método Select() do LINQ oferece uma maneira concisa de obter o elemento e seu índice. Ele transforma a coleção original em uma nova sequência onde cada elemento é emparelhado com seu índice.


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" };

        // Use Select() to get index and element
        var indexedNames = names.Select((name, index) => new { Name = name, Index = index });

        // Iterate through the indexed sequence
        foreach (var item in indexedNames)
        {
            Console.WriteLine($"Name: {item.Name}, Index: {item.Index}");
        }
    }
}

Este código cria um novo tipo anônimo contendo o nome e seu índice. O loop foreach então itera por essa nova sequência, fornecendo acesso a ambas as informações. Essa abordagem é legível e funciona bem para coleções de qualquer tamanho.

Usando um loop for padrão

Para melhor desempenho, especialmente com coleções grandes, um loop for padrão oferece uma abordagem mais direta. Isso evita a sobrecarga de criar uma nova sequência.


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" };

        // Use a for loop with index
        for (int index = 0; index < names.Count; index++)
        {
            string name = names[index];
            Console.WriteLine($"Name: {name}, Index: {index}");
        }
    }
}

Este método acessa diretamente os elementos usando seus índices. Embora não use um loop foreach, ele fornece uma solução mais eficiente para grandes conjuntos de dados.

A escolha entre esses métodos depende de suas prioridades. O método Select() oferece legibilidade, enquanto o loop for oferece melhor desempenho para coleções maiores. Considere o tamanho de seus dados e a importância da legibilidade ao fazer sua seleção.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *