1
resposta

[Sugestão] Pulando números

var listaDeParticipantes = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};

foreach (int participante in listaDeParticipantes)
{
    if (participante % 3 == 0)
    {
        continue;
    }

    Console.WriteLine(participante);
}
1 resposta

Olá, José! Como vai?

Parabéns pela resolução do desafio! O seu código em C# ficou excelente, limpo e utiliza com precisão a estrutura de repetição foreach combinada com o operador de resto da divisão (%).

A sua escolha de usar a palavra-chave continue foi cirúrgica. Vamos entender o porquê de essa estrutura ser tão poderosa no controle de fluxos de repetição e como ela manipula a esteira de execução da máquina:


O Mecanismo do continue no C#

Muitos programadores iniciantes confundem o funcionamento do continue com o do break. O seu código é o exemplo perfeito para explicar a diferença no fórum:

  • Se você tivesse utilizado o break, o laço seria interrompido por completo assim que o número 3 fosse atingido, e os números de 4 a 20 nunca seriam avaliados.
  • Com o continue, você diz ao compilador: "Ignore o restante das instruções apenas desta rodada atual e pule imediatamente para o próximo item da lista".

No seu código, sempre que a condição participante % 3 == 0 (múltiplos de 3) é verdadeira, a linha Console.WriteLine(participante); é ignorada, gerando no console aquela sequência limpa saltando os números 3, 6, 9, 12, 15 e 18.


Uma Curiosidade sobre Desempenho: O Tipo var

No início do seu script, você utilizou a palavra-chave var para instanciar a lista:

var listaDeParticipantes = new List<int> { ... };

Essa é uma prática recomendadíssima pelo guia de estilo oficial da Microsoft! O uso do var ativa o Inferência de Tipo no C#. Isso significa que você não precisa escrever List<int> lista = new List<int>(), evitando redundância na escrita.

É importante destacar para os colegas do fórum que isso não deixa o código mais lento e nem transforma o C# em uma linguagem dinamicamente tipada (como o JavaScript). O compilador descobre o tipo do dado em tempo de compilação e fixa a variável como uma lista estrita de inteiros. É apenas açúcar sintático (syntactic sugar) para deixar nossa digitação mais rápida.

Parabéns pela entrega impecável e por compartilhar um exemplo tão didático de controle de fluxo com a comunidade!

Espero que possa ter lhe ajudado!