Estrutura de repetição - foreach em C#

Seguindo a sequência de postagens sobre estruturas de repetição, hoje iremos falar sobre foreach que é uma estrutura mais simples e que facilita bastante quando queremos percorrer arrays, listas, coleções. Seu poder está na simplicidade de elaboração, pois na estrutura for já vista anteriormente, podemos fazer as mesmas operações que foreach faz, no entanto quando se trata de percorrer um conjunto de elementos sem a necessidade um controle maior usamos foreach.

A sintaxe da estrutura de repetição foreach é bem simples como vista abaixo:

foreach(variavel que faz referência a cada elemento do conjunto percorrido in conjunto de dados a ser percorrido)
{
código a ser executado
}

Percebemos pela sintaxe, que em relação ao for o foreach é bem mais simples para percorrer um conjunto de elementos, após a palavra reservada foreach temos dentro dos parênteses apenas duas informações, a primeira definimos uma variável do tipo de cada elemento do array, a segunda informação é o próprio array ou coleção que vamos percorrer. Na delimitação das chaves colocamos a implementação que for necessária para alcançarmos nosso objetivo.

Como exemplo prático vamos criar um array, como na postagem sobre laço for temos um array de carros já criado, vamos então usá-lo:


string[] carros =
{
"lvx-6780","lvu-5089","nou-8975","lvm-0809","lgk-6579","ght-8876","lmn-7432",
"lgk-1239","lvt-4509","lgu-8767","lvx-6658","lvx-3489","nil-4590","lvt-9879",
"lvm-3245","lvx-9089","lvt-3409","lvt-3682","mno-7341","lvm-3719","lvg-2332"
};

agora vamos criar o laço foreach que irá percorrer esse array:

foreach(string carro in carros)
{
Console.WriteLine(carro);
}

veja que como no nosso array de carros temos strings que representam as placas de carro, então na definição da variável que irá fazer referência a cada elemento do conjunto definimos uma variável do tipo string chamada de carro, em seguida colocamos in que é como se estivesse falando "dentro" e após isso o próprio array carros. No escopo das chaves colocamos um método do Console que irá exibir na tela os valores das placas.

O código completo em C# ficaria:


using System;

namespace _06_foreach
{
class Program
{
static void Main(string[] args)
{

string[] carros =
{
"lvx-6780","lvu-5089","nou-8975","lvm-0809","lgk-6579","ght-8876","lmn-7432",
"lgk-1239","lvt-4509","lgu-8767","lvx-6658","lvx-3489","nil-4590","lvt-9879",
"lvm-3245","lvx-9089","lvt-3409","lvt-3682","mno-7341","lvm-3719","lvg-2332"
};

foreach(string carro in carros)
{
Console.WriteLine(carro);
}
Console.ReadKey();
}
}
}

Se tentássemos fazer esse mesmo código usando a estrutura de repetição for, veja como teríamos um código um pouco mais complexo:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _06_foreach
{
class Program
{
static void Main(string[] args)
{

string[] carros =
{
"lvx-6780","lvu-5089","nou-8975","lvm-0809","lgk-6579","ght-8876","lmn-7432",
"lgk-1239","lvt-4509","lgu-8767","lvx-6658","lvx-3489","nil-4590","lvt-9879",
"lvm-3245","lvx-9089","lvt-3409","lvt-3682","mno-7341","lvm-3719","lvg-2332"
};

for(int i=0; i{
Console.WriteLine(carros[i]);
}
Console.ReadKey();
}
}
}

Observe que conseguimos com êxito nosso objetivo usando também o laço for, como também poderíamos conseguir usando os laços já vistos como while e do while, no entanto em cada laço desses, as suas particularidades podem dar mais trabalho ao programador na busca dos seus objetivos. Então a dica que fica é, aprenda todos os laços e use-os com sabedoria de acordo com suas necessidades, o que as vezes parece complexo, pode ser mais simples do que se imaginava quando dominamos bem uma linguagem de programação.

Até o próximo post!



Se você ainda não cadastrou seu email para receber atualizações de postagens, vá a nossa página inicial e cadastre, ou se preferir clique Aqui
Autor
Maclaine Sabino

Maclaine Sabino Graduado em Matemática, Administração, finalizando Análise e Desenvolvimento de Sistemas.
Ama aprender coisas novas, tecnologia e música.