Question Boucle C # - rompre ou continuer


Dans une boucle C # (n'hésitez pas à répondre pour les autres langues), quelle est la différence entre break et continue pour quitter la structure de la boucle et passer à l'itération suivante?

Exemple:

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

681
2017-08-08 21:49


origine


Réponses:


break quittera complètement la boucle, continue juste sauter l'itération actuelle.

Par exemple:

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

    DoSomeThingWith(i);
}

La rupture provoquera la sortie de la boucle lors de la première itération - DoSomeThingWith ne sera jamais exécuté. Ça ici:

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

    DoSomeThingWith(i);
}

N'exécutera pas DoSomeThingWith pour i = 0mais la boucle sera continuer et DoSomeThingWith sera exécuté pour i = 1 à i = 9.


1307
2017-08-08 21:51



Un moyen très simple de comprendre cela est de placer le mot «boucle» après chacun des mots-clés. Les termes ont maintenant du sens s'ils sont lus comme des phrases de tous les jours.

break loop - looping est cassé et s'arrête.

continue loop-loop continue à s'exécuter avec l'itération suivante.


360
2017-08-08 22:33



Pause provoque le compteur de programme à sauter hors de la portée de la boucle la plus intérieure

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

Fonctionne comme ça

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

continuer saute à la fin de la boucle. Dans une boucle for, continuez jusqu'à l'expression d'incrémentation.

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

    printf("%d", i);
}

Fonctionne comme ça

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

    printf("%d", i);

    CONTINUE:;
}

91
2017-08-19 20:21



break arrêterait le foreach boucle complètement, continue passerait à la prochaine DataRow.


24
2017-08-08 21:50



Il y a plus de quelques personnes qui n'aiment pas break et continue. La dernière plainte que j'ai vue à leur sujet était en JavaScript: Les bonnes parties par Douglas Crockford. Mais je trouve que parfois en utilisant l'un d'eux simplifie vraiment les choses, surtout si votre langue ne comprend pas do-while ou do-until style de boucle.

J'ai tendance à utiliser break dans les boucles qui recherchent une liste pour quelque chose. Une fois trouvé, il ne sert à rien de continuer, alors vous pourriez aussi bien quitter.

j'utilise continue lorsque vous faites quelque chose avec la plupart des éléments d'une liste, mais que vous voulez en passer quelques-uns.

le break déclaration est également utile lors de l'interrogation d'une réponse valide de quelqu'un ou de quelque chose. Au lieu de:

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

Vous pourriez éliminer la duplication et l'utilisation:

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

le do-until boucle que j'ai mentionné avant est la solution la plus élégante pour ce problème particulier:

Do:
    Ask a question
    Until the answer is valid

Pas de duplication, et non break nécessaire non plus.


18
2017-08-08 22:35



Tous ont donné une très bonne explication. Je poste toujours ma réponse juste pour donner un exemple si cela peut aider.

// 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] ";
}

Voici la sortie:

0 [Imprimé] 1 [Imprimé] 2 [Imprimé]

Donc 3 [Imprimé] & 4 [Imprimé] ne sera pas affiché car il y a pause quand i == 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] ";
}

Voici la sortie:

0 [Imprimé] 1 [Imprimé] 2 [Imprimé] 4 [Imprimé]

Donc 3 [Imprimé] ne sera pas affiché car il y a continue quand i == 3


12
2017-12-21 07:27



J'avais l'habitude de toujours être confus si je devrais utiliser la pause, ou continuer. C'est ce qui m'aide à me souvenir:

Quand utiliser pause vs continuer?

  1. Pause - C'est comme casser. C'est triste, vous vous séparez.

Break

  1. Continuer - signifie que vous allez vous reposer aujourd'hui et que vous allez tout faire demain (c'est-à-dire ignorer l'itération actuelle)!

Continue


8
2017-12-05 23:07