foreach
string[] plants = { "leaf", "mint" }; guarda duas palavras. Depois foreach (string plant in plants) entrega cada palavra ao nome plant, e Console.WriteLine(plant) a escreve. A tela mostra duas linhas: leaf, depois mint. Nesta página você não escreve um contador de índice. Mantenha a classe pública com o nome Pine.
Um nome para cada valor do array
Abra o arquivo Pine. O nome da classe continua Pine. Esta página não renomeia o tipo. Apague qualquer for com break ou continue se essa forma ainda estiver lá. Apague um for contado for (int i = 1; i <= 5; i = i + 1) se ainda estiver lá. Apague qualquer linha ReadLine. O arquivo que você guarda não espera digitação, não tem break cedo e não tem contador de índice. A tela só é escrita pela linha de escrita dentro das chaves do foreach.
Dentro de Main, guarde o array primeiro: string[] plants = { "leaf", "mint" };. Essa linha não escreve a tela. Só mantém duas palavras sob o nome plants. Depois o laço:
foreach (string plant in plants) {
Console.WriteLine(plant);
}
A palavra foreach fica em minúsculas, escrita como uma só palavra. Dentro dos parênteses ficam o tipo do elemento string, o nome plant para um elemento, a palavra in, depois o nome do array plants. Esse in não é um caminho e não é um rótulo de case. Marca “cada valor de plants entra em plant.” As chaves guardam o corpo. Console.WriteLine(plant); escreve a palavra atual sem aspas em volta de plant. Salve o arquivo.
O arquivo que você guarda
Mantenha esta forma de ensino. Um string[] chamado plants que guarda leaf depois mint. Um foreach com string plant in plants. Uma linha de escrita que escreve o nome nu plant. Não há índice i, não há break, e não há aspas em volta de plant.
using System;
public class Pine
{
public static void Main()
{
string[] plants = { "leaf", "mint" };
foreach (string plant in plants)
{
Console.WriteLine(plant);
}
}
}
Leia de cima. using System; prepara nomes curtos. public class Pine nomeia o tipo. public static void Main() é onde o runtime começa. string[] plants = { "leaf", "mint" }; guarda duas palavras. foreach (string plant in plants) as percorre. Console.WriteLine(plant); escreve cada palavra. Duas linhas na tela: leaf, depois mint.
Execute com dotnet run. O programa escreve duas linhas e para. Não espera você digitar. Se dotnet run esperar, ReadLine ainda está no arquivo. Apague essa linha e mantenha o array mais o foreach acima. A tela mostra leaf, depois mint. Se a tela mostrar só leaf, você pode ainda estar na página de arrays que escreve plants[0] uma vez. Troque isso por foreach. Se a tela mostrar as letras plant em cada linha, a linha de escrita tem aspas: Console.WriteLine("plant");. Se a tela mostrar foreach como letras, uma linha de escrita tem aspas em volta dessa palavra. Você não reinstala o SDK .NET por uma tela que mostra as linhas erradas.
Percorra uma execução completa em ordem. plants guarda leaf, depois mint. A primeira passagem coloca plant em leaf e a linha de escrita escreve leaf. A segunda passagem coloca plant em mint e escreve mint. Depois não há mais valores, então o laço termina. Nesta página você não escreveu int i = 0 nem i < plants.Length. O cabeçalho foreach pede ao C# que visite cada valor guardado uma vez. O nome plant é declarado uma vez no cabeçalho como string plant.
Percorra um array int do mesmo jeito
Mude o array guardado e o tipo do elemento para que cada valor seja um número inteiro. Use int[] slots = { 2, 4, 6 }; e foreach (int n in slots) com Console.WriteLine(n); no corpo. Agora a tela deve mostrar três linhas: 2, depois 4, depois 6. A palavra in ainda fica entre o nome do elemento e o nome do array. O corpo ainda escreve o nome que guarda um elemento.
using System;
public class Pine
{
public static void Main()
{
int[] slots = { 2, 4, 6 };
foreach (int n in slots)
{
Console.WriteLine(n);
}
}
}
Este é o segundo arquivo. Não é o arquivo que você guarda. Execute dotnet run. A tela mostra três linhas. Você trocou o array string por um array int e combinou o tipo do nome do elemento com int. Depois de ver 2, 4 e 6, coloque de volta o arquivo guardado: plants com foreach (string plant in plants). As duas versões são C# válido. Ensinam a mesma forma foreach com tipos de elemento diferentes.
Leia a execução int mais uma vez. slots guarda 2, depois 4, depois 6. A primeira passagem coloca n em 2 e escreve. A segunda passagem coloca n em 4 e escreve. A terceira passagem coloca n em 6 e escreve. Depois o laço termina. Não há aspas em volta dos números nas chaves do array. Console.WriteLine(n) sem aspas em volta de n escreve esses números guardados na tela.
Regras que mantêm foreach claro
Os parênteses devem guardar tipo, nome, in e nome do array nessa ordem. Escrever foreach (string plant plants) sem in faz o build escrever um erro. O tipo do elemento deve caber no array: string com um array string, int com um array int. Colocar string plant ao lado de um array int[] não é a forma que esta lição constrói. As chaves ainda guardam o corpo quando o corpo tem uma ou mais linhas.
foreach não é o for contado da página anterior, e não é break da página de antes. O for contado escrevia início, teste e passo com um contador. foreach percorre valores já guardados num array. break termina um laço cedo; o primeiro demo desta página escreve cada valor. Não deixe um demo de break nem um while simples no mesmo Main e se pergunte por que a tela mostra 1 e 2 em vez de leaf e mint. O Main desta sessão deve guardar só o array e o foreach.
Uma confusão comum é escrever a própria sintaxe: Console.WriteLine("foreach");. Isso escreve os caracteres foreach. Não percorre o array. Outra confusão é Console.WriteLine("plant"); com aspas, que escreve a palavra letra plant em cada passagem em vez de leaf e mint. Mantenha Console.WriteLine(plant) sem aspas quando quiser o valor do elemento na tela.
Se o array não tiver elementos — por exemplo string[] plants = { }; — o corpo nunca roda e a tela fica em branco. Isso ainda é um foreach válido; os demos desta lição guardam pelo menos dois valores para você ver as linhas escritas. Quando mais tarde precisar de um número de índice na tela, o for contado volta; foreach serve para visitar valores sem gerenciar esse índice você mesmo. Mudar um valor dentro do laço com plant = "stem"; não reescreve a casa do array nesta forma iniciante — trate plant como o valor que você lê para escrever, não como ferramenta para editar plants.
Agora você pode guardar um array, escrever foreach (Type name in arrayName) e escrever cada valor uma vez. Combinar o tipo do elemento com o array mantém o laço construindo. A próxima página é methods, onde você agrupa linhas sob um nome que pode chamar de Main.
A tela é cada valor do array
O arquivo que você guarda escreve leaf, depois mint. O nome plant está na linha de escrita, e as letras plant não ficam na tela como rótulo. A palavra in está nos parênteses, e in não fica na tela. Aspas em volta de plant ou de foreach escrevem letras, não o percurso do array.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo