Pregunta C # loop - break vs. continue


En un ciclo C # (no dude en responder para otros idiomas), ¿cuál es la diferencia entre break y continue como medio para abandonar la estructura del ciclo, y pasar a la siguiente iteración?

Ejemplo:

foreach (DataRow row in myTable.Rows)
{
    if (someConditionEvalsToTrue)
    {
        break; //what's the difference between this and continue ?
        //continue;
    }
}

681
2017-08-08 21:49


origen


Respuestas:


break saldrá del ciclo completamente, continue será sólo omitir la iteración actual.

Por ejemplo:

for (int i = 0; i < 10; i++) {
    if (i == 0) {
        break;
    }

    DoSomeThingWith(i);
}

La ruptura hará que el bucle salga en la primera iteración - DoSomeThingWith nunca será ejecutado. Esto aqui:

for (int i = 0; i < 10; i++) {
    if(i == 0) {
        continue;
    }

    DoSomeThingWith(i);
}

No ejecutará DoSomeThingWith para i = 0, pero el ciclo continuar y DoSomeThingWith será ejecutado por i = 1 a i = 9.


1307
2017-08-08 21:51



Una forma realmente fácil de entender esto es colocar la palabra "loop" después de cada una de las palabras clave. Los términos ahora tienen sentido si solo se leen como frases cotidianas.

break loop - looping está roto y se detiene.

continue loop - loop continúa ejecutándose con la siguiente iteración.


360
2017-08-08 22:33



descanso hace que el contador del programa salte fuera del alcance del bucle más interno

for(i = 0; i < 10; i++)
{
    if(i == 2)
        break;
}

Funciona así

for(i = 0; i < 10; i++)
{
    if(i == 2)
        goto BREAK;
}
BREAK:;

continuar salta al final del ciclo. En un ciclo for, continúe saltando a la expresión de incremento.

for(i = 0; i < 10; i++)
{
    if(i == 2)
        continue;

    printf("%d", i);
}

Funciona así

for(i = 0; i < 10; i++)
{
    if(i == 2)
        goto CONTINUE;

    printf("%d", i);

    CONTINUE:;
}

91
2017-08-19 20:21



break detendría el foreach bucle completamente, continue saltaría a la siguiente DataRow.


24
2017-08-08 21:50



Hay más de unas pocas personas a las que no les gusta break y continue. La última queja que vi sobre ellos fue en JavaScript: las buenas partes por Douglas Crockford. Pero encuentro que a veces usar uno de ellos realmente simplifica las cosas, especialmente si su lenguaje no incluye un do-while o do-until estilo de bucle

Tiendo a usar break en bucles que buscan una lista de algo. Una vez encontrado, no tiene sentido continuar, por lo que es mejor que renuncie.

yo suelo continue cuando se hace algo con la mayoría de los elementos de una lista, pero aún se quiere omitir algunos.

los break La declaración también es útil cuando se busca una respuesta válida de alguien o algo. En lugar de:

Ask a question
While the answer is invalid:
    Ask the question

Podrías eliminar algunas duplicaciones y usar:

While True:
    Ask a question
    If the answer is valid:
        break

los do-until Lo que mencioné antes es la solución más elegante para ese problema en particular:

Do:
    Ask a question
    Until the answer is valid

Sin duplicación, y sin break necesario tampoco.


18
2017-08-08 22:35



Todos han dado una muy buena explicación. Todavía estoy publicando mi respuesta solo para dar un ejemplo si eso puede ayudar.

// break statement
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break; // It will force to come out from the loop
    }

    lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}

Aquí está el resultado:

0 [Impreso] 1 [Impreso] 2 [Impreso]

Por lo tanto, 3 [Impreso] y 4 [Impreso] no se mostrarán ya que hay interrupción cuando yo == 3

//continue statement
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue; // It will take the control to start point of loop
    }

    lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}

Aquí está el resultado:

0 [Impreso] 1 [Impreso] 2 [Impreso] 4 [Impreso]

Entonces 3 [Impreso] no se mostrará ya que hay continuación cuando i == 3


12
2017-12-21 07:27



Solía ​​confundirme siempre si debía usar break o continue. Esto es lo que me ayuda a recordar:

Cuándo usar break vs. continue?

  1. Descanso - es como romper. Es triste, ustedes se están despidiendo.

Break

  1. Continuar - significa que vas a dar hoy un descanso y ordenarlo todo mañana (es decir, omita la iteración actual).

Continue


8
2017-12-05 23:07



Descanso

Break forza un ciclo para salir de inmediato.

Continuar

Esto hace lo contrario de romper. En lugar de terminar el ciclo, inmediatamente se repite, omitiendo el resto del código.


7
2018-03-28 06:58