Estas são duas formas “domesticadas” de “goto”. “break” interrompe o loop. “continue” pula o que falta no loop e vai para a próxima interação.
Estes dois comandos são aplicáveis a todas as estruturas de loop, cada qual com seu comportamento.
Break
O “break” força um loop parar imediatamente, como no exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int markerpos =- 1; for (index = 0 ;index < 10; index++ ) { if (values[index] == -999 ) { markerpos = index; break; // interrompe o loop } } if (markerpos == 999) Console.WriteLine("O valor -1 não foi localizado no array"); else Console.WriteLine("O valor -1 foi encontrado no índice {0}",markerpos); |
O exemplo procura em um array de 10 elementos o valor 999. A variável markepos armazena o índice do array onde o valor 999 foi encontrado. Como o valor inicial de markepos foi configurado para -1, ele é verificado para assegurar a existência do valor 999 no array, o que é feito no comando if logo em seguida.
O “break” precisa ser usado com cuidado pois interrompe a lógica tradicional de um laço de repetição, porém, ele pode ser útil quando se procura um único valor em uma coleção ou array muito grande, não sendo necessário varre-la por completo.
Continue
É exatamento o oposto do break. Ao ser chamado, o continue interrompe o código do loop exatamente naquele ponto e “pula” para a próxima interação do laço. No código abaixo, todos os valores do array serão somando à variável value, exceto os que estiverem no índices 4 e 5.
1 2 3 4 5 6 7 8 | int value = 0; for (index = 0 ;index < 10;index++ ) { if (index == 4 || index == 5) continue; value += numbers[index]; } Console.WriteLine("Value = {0}",value) ; |
É bastante útil em situações de números pares e ímpares por exemplo.