Iterando em C#: Entendendo o Foreach e como utilizá-lo
- #C#
Dev, sabe quando você precisa percorrer uma lista de números ou nomes, um array ou alguma estrutura de dados em seu código? O C# possui uma ótima ferramenta para nos auxiliar nessa tarefa: o Foreach. Vamos entender como ele funciona e como utilizá-lo!
O que é o foreach?
O foreach é uma instrução que utilizamos para iterar conjuntos de dados de forma concisa e prática, sem precisar informar quantos registros há no conjunto. Em outras palavras, utilizamos para percorrer dados de uma determinada estrutura e realizarmos uma ou um conjunto de instruições para cada elemento dessa estrutura.
Imagine que você possui uma gaveta cheia de camisetas. O foreach seria como um "separador" que pegaria uma camiseta por vez e executaria algo com ela (colocar em outra gaveta, colocar para lavar, etc), até finalizar toda a gaveta!
Ele funciona da seguinte forma:
Como utilizar o foreach?
A sintaxe do foreach é bem simples e intuitiva. Exemplo:
foreach (var camiseta in gaveta)
{
Console.WriteLine(camiseta);
}
Onde "gaveta" seria o seu conjunto de dados e "camiseta" seria um elemento desse conjunto, e para cada elemento, executaria a instrução de printá-la no console.
Alguns exemplos de utilização:
- Array:
int[] numeros = { 1, 2, 3, 4, 5 };
foreach (var numero in numeros)
{
Console.WriteLine(numero);
}
Fará a impressão de cada número dentro do array.
- Lista:
List<string> nomes = new List<string> { "João", "Maria", "Pedro" };
foreach (var nome in nomes)
{
Console.WriteLine(nome);
}
Fará a impressão do nome de cada pessoa na lista "Nomes".
- Dicionário:
Dictionary<int, string> alunos = new Dictionary<int, string>
{
{ 1, "João" },
{ 2, "Maria" },
{ 3, "Pedro" }
};
foreach (var aluno in alunos)
{
Console.WriteLine($"Número: {aluno.Key}, Nome: {aluno.Value}");
}
Fará a impressão do número do aluno e seu nome, para cada aluno do dicionário "Alunos".
Truques para utilizar com o foreach:
Você pode utilizar as instruções "break", para sair do loop, ou "continue" para pular para o próximo elemento da estrutura em determinada condição. Por exemplo:
var gaveta = new List<string>() { "Camiseta Preta", "Camiseta Vermelha", "Camiseta Azul" };
foreach (string camiseta in gaveta)
{
if (camiseta == "Camiseta Vermelha")
{
break;
}
Console.WriteLine(camiseta);
}
Sairá do loop quando "camiseta" tiver valor igual à "Camiseta Vermelha".
var gaveta = new List<string>() { "Camiseta Preta", "Camiseta Vermelha", "Camiseta Azul" };
foreach (string camiseta in gaveta)
{
if (camiseta == "Camiseta Vermelha")
{
continue;
}
Console.WriteLine(camiseta);
}
Pulará para o próximo elemento da "gaveta", não executando o print dessa camiseta em específico.
Além de percorrer coleções como demonstrei acima, o foreach pode ser utilizado em conjunto com o "yield" para criar sequências de dados sob demanda. Exemplo de uma função que retornará números pares de 0 à 10:
// Utilizando yield para criar uma sequência de números pares
static IEnumerable<int> NumerosPares()
{
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
yield return i;
}
}
}
foreach (int numeroPar in NumerosPares())
{
Console.WriteLine(numeroPar);
}
O foreach fará a impressão dos números pares retornados da função "NumerosPares()".
Conclusão
Em resumo, o foreach é extramemente útil e prático para percorrer dados no desenvolvimento de software. Ele simplifica a iteração em diferentes estruturas, com uma sintaxe simples e clara. É uma ótima forma de aumentar a produtividade e qualidade dos seus códigos, facilitando a manutenção e eficiência do desenvolvimento.
Espero que tenha te ajudado, e bons códigos! 😉