Em um loop C # (sinta-se à vontade para responder a outros idiomas), qual é a diferença entre break e continue como um meio de deixar a estrutura do loop e ir para a próxima iteração?
Exemplo:
foreach (DataRow row in myTable.Rows)
{
if (someConditionEvalsToTrue)
{
break; //what's the difference between this and continue ?
//continue;
}
}
c#
loops
enumeration
Seibar
fonte
fonte
continue;
interromperá o processamento da correnterow
e continuará com a próximarow
da coleção. Por outro lado,break;
deixará aforeach
instrução completamente e as linhas restantes nunca serão processadas.Respostas:
break
sairá completamente do loop,continue
apenas ignorará a iteração atual.Por exemplo:
A quebra fará com que o loop saia na primeira iteração -
DoSomeThingWith
nunca será executado. Isso aqui:Não será executado
DoSomeThingWith
parai = 0
, mas o loop continuará eDoSomeThingWith
será executado parai = 1
parai = 9
.fonte
Uma maneira realmente fácil de entender isso é colocar a palavra "loop" após cada uma das palavras-chave. Os termos agora fazem sentido se forem apenas lidos como frases do cotidiano.
break
loop - o loop está quebrado e para.continue
loop - loop continua a executar com a próxima iteração.fonte
break faz com que o contador de programas salte fora do escopo do loop mais interno
Funciona assim
continue pula para o final do loop. Em um loop for, continue pula para a expressão de incremento.
Funciona assim
fonte
for
loop padrão , mas isso funcionará parawhile
loops pré e pós testados ? Agoto
notação me leva a acreditar que sim, mas preciso de alguma verificação.while
("pré-testado") edo
-while
("pós-testado"), depois que umacontinue;
instrução é atendida, a próxima coisa que acontece é que a condição do loop é avaliada para decidir se uma iteração adicional deve ser feita. Obviamente, combreak;
a condição do loop não marcada, o loop simplesmente sai completamente. Portanto, agoto
analogia é boa para entender esse aspecto também.Eu sempre me confundia se deveria usar o intervalo ou continuar. Isto é o que me ajuda a lembrar:
Quando usar break vs continue?
fonte
break
interromperiaforeach
completamente o loop,continue
passaria para o próximoDataRow
.fonte
Existem mais do que algumas pessoas que não gostam
break
econtinue
. A última reclamação que vi sobre eles foi em JavaScript: The Good Parts, de Douglas Crockford. Mas acho que, às vezes usando um deles realmente simplifica as coisas, especialmente se o seu idioma não incluir umdo-while
oudo-until
estilo de loop.Eu costumo usar
break
loops que estão procurando alguma coisa na lista. Uma vez encontrado, não faz sentido continuar, então é melhor sair.Uso
continue
ao fazer algo com a maioria dos elementos de uma lista, mas ainda quero pular alguns.A
break
declaração também é útil ao pesquisar uma resposta válida de alguém ou algo. Ao invés de:Você pode eliminar algumas duplicações e usar:
O
do-until
loop que eu mencionei antes é a solução mais elegante para esse problema específico:Sem duplicação e sem
break
necessidade.fonte
Todos deram uma explicação muito boa. Ainda estou postando minha resposta apenas para dar um exemplo, se isso puder ajudar.
Aqui está a saída:
Portanto, 3 [Impresso] e 4 [Impresso] não serão exibidos, pois há uma pausa quando i == 3
Aqui está a saída:
Então 3 [Impresso] não será exibido, pois continua quando i == 3
fonte
Quebrar
A quebra força um loop a sair imediatamente.
Continuar
Isso faz o oposto do intervalo. Em vez de encerrar o loop, ele imediatamente volta ao loop, pulando o restante do código.
fonte
Continue
não é o oposto debreak
,break
interrompe o loop,continue
interrompe a iteração atual.Resposta simples:
Break sai do loop imediatamente.
Continuar inicia o processamento do próximo item. (Se houver, saltando para a linha de avaliação do por / enquanto)
fonte
Por exemplo
Imprime 1, 2, 3 (em linhas separadas).
Adicione uma condição de interrupção em i = 2
Agora o loop imprime 1 e para.
Substitua a pausa por uma continuação.
Agora, faça um loop das impressões 1 e 3 (pulando 2).
Assim,
break
interrompe o loop, enquantocontinue
pula para a próxima iteração.fonte
Infelizmente, Ruby é um pouco diferente. PS: Minha memória está um pouco obscura com isso, então peço desculpas se eu estiver errado
em vez de quebrar / continuar, tem quebra / próximo, que se comporta da mesma maneira em termos de loops
Loops (como todo o resto) são expressões e "retornam" a última coisa que eles fizeram. Na maioria das vezes, obter o valor de retorno de um loop é inútil, então todo mundo faz isso
No entanto, você pode fazer isso
No entanto, muitos códigos ruby 'emulam' um loop usando um bloco. O exemplo canônico é
Como é muito mais comum as pessoas quererem fazer as coisas com o resultado de um bloco, é aqui que fica confuso. break / next significa coisas diferentes no contexto de um bloco.
break pulará do código que chamou o bloco
next pulará o restante do código no bloco e retornará o que você especificar para o chamador do bloco. Isso não faz sentido sem exemplos.
Então sim. Ruby é incrível, mas tem alguns casos de canto horríveis. Este é o segundo pior que já vi nos meus anos de uso :-)
fonte
Por favor, deixe-me declarar o óbvio: observe que adicionar nem interromper nem continuar retomará seu programa; ou seja, fiquei preso por um determinado erro e, depois de registrá-lo, quis retomar o processamento, e havia mais tarefas de código entre a próxima linha, então deixei passar.
fonte
Para sair completamente de um loop foreach, é usada a pausa ;
Para ir para a próxima iteração no loop, continue é usado;
Quebrar é útil se você estiver percorrendo uma coleção de Objetos (como Linhas em um Datatable) e estiver procurando por uma correspondência específica. Quando você encontrar essa correspondência, não será necessário continuar pelas linhas restantes, portanto, você deseja interromper Fora.
Continuar é útil quando você realiza o que precisa ao lado de uma iteração de loop. Você normalmente continuará após um if .
fonte
se você não quiser usar break, apenas aumente o valor de I de forma a tornar a condição de iteração falsa e o loop não será executado na próxima iteração.
fonte
Quanto aos outros idiomas:
fonte