0Pricing
C# Academy · Aula

Erros comuns de iteração

Modifique enquanto itera.

Erros comuns de iteração é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.

Armadilhas da iteração

Os laços são simples, mas alguns erros confundem iniciantes repetidamente.

Nesta lição, veremos os erros de iteração mais comuns e como evitá-los.

Modificando durante a iteração

O maior erro é alterar uma coleção enquanto você a percorre com foreach.

Adicionar ou remover itens durante a iteração lança uma InvalidOperationException em tempo de execução.

foreach (var n in list)
{
    if (n < 0) list.Remove(n); // ERROR at runtime
}

A solução segura

Para remover itens durante o laço, percorra uma cópia ou reúna os itens primeiro e remova-os depois.

Percorrer list.ToList() fornece um instantâneo separado para percorrer.

var list = new List<int> { 1, -2, 3, -4 };
foreach (var n in list.ToList())
{
    if (n < 0) list.Remove(n);
}
Console.WriteLine(string.Join(",", list));

Erro de um a mais nos laços for

Em um laço for manual, usar <= em vez de < acessa uma posição além do fim.

Os índices válidos vão de 0 a Length - 1, portanto a condição deve ser i < Length.

for (int i = 0; i <= arr.Length; i++) // BUG: <= goes too far
{
    Console.WriteLine(arr[i]);
}

IndexOutOfRange

Esse erro de um a mais causa uma IndexOutOfRangeException.

foreach evita isso completamente, pois nunca usa um índice. Prefira-o quando precisar apenas ler os itens.

string[] arr = { "a", "b", "c" };
for (int i = 0; i < arr.Length; i++) // correct: < Length
{
    Console.WriteLine(arr[i]);
}

Esperando que foreach altere os itens

Atribuir um valor à variável do laço não altera a coleção e, no caso de tipos de valor, ela é apenas uma cópia.

Para atualizar itens, utilize um laço for com indexação.

int[] nums = { 1, 2, 3 };
for (int i = 0; i < nums.Length; i++)
{
    nums[i] = nums[i] * 10;
}
Console.WriteLine(string.Join(",", nums));

Coleção nula

Chamar foreach em uma referência null lança uma NullReferenceException.

Uma coleção vazia não é um problema, mas null é. Verifique ou inicialize a coleção antes de percorrê-la.

List<int> data = null;
if (data != null)
{
    foreach (var x in data) Console.WriteLine(x);
}

Confusão com o escopo da variável

A variável do laço existe somente dentro do corpo do laço.

Tentar usá-la depois do laço causa um erro de compilação, pois ela fica fora do escopo quando o laço termina.

foreach (var n in nums)
{
    Console.WriteLine(n);
}
// Console.WriteLine(n); // ERROR: n not in scope here

Esquecendo as chaves

Sem chaves, apenas a próxima instrução pertence ao laço.

Isso pode interromper a lógica silenciosamente. Sempre utilize chaves em corpos com várias linhas para manter a intenção clara.

foreach (var n in nums)
    Console.WriteLine(n);
    Console.WriteLine("runs once, not per item");

Risco de infinitude em while

Ao contrário de foreach, um laço while pode ser executado para sempre se sua condição nunca se tornar falsa.

Sempre certifique-se de que algo dentro do laço avance em direção à condição de saída.

int i = 0;
while (i < 3)
{
    Console.WriteLine(i);
    i++; // forgetting this would loop forever
}

Escolhendo o laço certo

Ler todos os itens, sem precisar de índice → foreach.

Precisar do índice ou ter de modificar no local → for. Repetir até que uma condição mude → while.

Verificação rápida

Teste o que você aprendeu sobre erros de iteração.

Recapitulação

Você aprendeu a evitar modificar uma coleção durante foreach, erros de um a mais com <=, coleções nulas e confusão com escopo.

Escolha foreach para ler, for para modificar por índice e while para laços baseados em condições com uma saída clara.

Perguntas Frequentes

A aula “Erros comuns de iteração” é grátis?

Sim — o texto completo de “Erros comuns de iteração” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.

O que vou aprender em “Erros comuns de iteração”?

Modifique enquanto itera. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Erros comuns de iteração”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O laço foreach
  2. Iterando coleções
  3. break e continue
  4. Erros comuns de iteração
← Voltar para C# Academy