Dans une boucle C # (n'hésitez pas à répondre pour d'autres langages), 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;
}
}
c#
loops
enumeration
Seibar
la source
la source
continue;
arrêtera le traitement du courantrow
et continuera avec le suivantrow
de la collection. En revanche,break;
laissera l'foreach
instruction complètement et les lignes restantes ne seront jamais traitées.Réponses:
break
quittera complètement la boucle, sauteracontinue
simplement l'itération en cours.Par exemple:
La rupture entraînera la sortie de la boucle à la première itération -
DoSomeThingWith
ne sera jamais exécutée. Ça ici:N'exécutera pas
DoSomeThingWith
pouri = 0
, mais la boucle continuera etDoSomeThingWith
sera exécutée pouri = 1
toi = 9
.la source
Un moyen très simple de comprendre cela est de placer le mot "boucle" après chacun des mots clés. Les termes ont désormais un sens s'ils sont simplement lus comme des phrases de tous les jours.
break
loop - le bouclage est interrompu et s'arrête.continue
loop - la boucle continue de s'exécuter avec l'itération suivante.la source
break fait sauter le compteur de programmes hors de la portée de la boucle la plus intérieure
Fonctionne comme ça
continuer les sauts jusqu'à la fin de la boucle. Dans une boucle for, continuez de sauter à l'expression d'incrémentation.
Fonctionne comme ça
la source
for
boucle standard , mais cela fonctionnera-t-il pour leswhile
boucles pré et post testées ? Lagoto
notation m'amène à le croire, mais nécessite une vérification.while
("pré-testé") etdo
-while
("post-testé"), une fois qu'unecontinue;
instruction est remplie, la prochaine chose qui va se produire est que la condition de boucle est évaluée pour décider si une itération supplémentaire doit être effectuée. Bien sûr, sibreak;
la condition de boucle n'est pas vérifiée, la boucle est simplement complètement fermée. Donc, l'goto
analogie est bonne pour comprendre cet aspect aussi.J'étais toujours confus si je devais utiliser pause ou continuer. C'est ce qui m'aide à me souvenir:
Quand utiliser break vs continue?
la source
break
arrêteraitforeach
complètement la boucle,continue
passerait à la suivanteDataRow
.la source
Il y a plus de quelques personnes qui n'aiment pas
break
etcontinue
. La dernière plainte que j'ai vue à leur sujet était en JavaScript: The Good Parts de Douglas Crockford. Mais je trouve que parfois utiliser l'un d'eux simplifie vraiment les choses, surtout si votre langue n'inclut pas de styledo-while
oudo-until
de boucle.J'ai tendance à utiliser des
break
boucles qui recherchent quelque chose dans une liste. Une fois trouvé, il ne sert à rien de continuer, vous pouvez donc aussi bien arrêter.J'utilise
continue
lorsque je fais quelque chose avec la plupart des éléments d'une liste, mais je veux quand même en sauter quelques-uns.La
break
déclaration est également utile lors du sondage pour une réponse valide de quelqu'un ou quelque chose. Au lieu de:Vous pouvez éliminer certains doublons et utiliser:
La
do-until
boucle que j'ai mentionnée précédemment est la solution la plus élégante pour ce problème particulier:Pas de duplication, pas
break
besoin non plus.la source
Tous ont donné une très bonne explication. Je poste toujours ma réponse juste pour donner un exemple si cela peut aider.
Voici la sortie:
Donc 3 [Imprimé] & 4 [Imprimé] ne seront pas affichés car il y a une pause lorsque i == 3
Voici la sortie:
Donc 3 [Imprimé] ne s'affichera pas car il continue quand i == 3
la source
Pause
Break force une boucle à sortir immédiatement.
Continuer
Cela fait le contraire de la rupture. Au lieu de terminer la boucle, il boucle à nouveau immédiatement, ignorant le reste du code.
la source
Continue
n'est pas l'opposé debreak
,break
arrête la boucle,continue
arrête l'itération en cours.Réponse simple:
Break quitte immédiatement la boucle.
Continuer commence le traitement de l'élément suivant. (S'il y en a, en sautant sur la ligne d'évaluation du pour / pendant)
la source
Par exemple
Imprime 1, 2, 3 (sur des lignes distinctes).
Ajouter une condition de rupture à i = 2
Maintenant, la boucle imprime 1 et s'arrête.
Remplacez la pause par un continuer.
Maintenant, pour boucler les impressions 1 et 3 (en sautant 2).
Ainsi,
break
arrête la boucle, tandis quecontinue
passe à l'itération suivante.la source
Ruby est malheureusement un peu différent. PS: Ma mémoire est un peu floue à ce sujet, donc je m'excuse si je me trompe
au lieu de break / continue, il a break / next, qui se comportent de la même manière en termes de boucles
Les boucles (comme tout le reste) sont des expressions et "renvoient" la dernière chose qu'elles ont faite. La plupart du temps, obtenir la valeur de retour d'une boucle est inutile, donc tout le monde le fait
Vous pouvez cependant le faire
CEPENDANT, beaucoup de code ruby «émule» une boucle en utilisant un bloc. L'exemple canonique est
Comme il est beaucoup plus courant pour les gens de vouloir faire des choses avec le résultat d'un bloc, c'est là que ça devient salissant. break / next signifie différentes choses dans le contexte d'un bloc.
pause sautera hors du code qui a appelé le bloc
ensuite sautera le reste du code dans le bloc et «retournera» ce que vous spécifiez à l'appelant du bloc. Cela n'a aucun sens sans exemples.
Donc voilà. Ruby est génial, mais il a de terribles cas d'angle. C'est le deuxième pire que j'ai vu depuis mes années d'utilisation :-)
la source
Permettez-moi de dire l'évidence: notez que l'ajout ni de pause ni de poursuite reprendra votre programme; c'est-à-dire que j'ai piégé pour une certaine erreur, puis après l'avoir enregistré, je voulais reprendre le traitement, et il y avait plus de tâches de code entre la ligne suivante, donc je l'ai simplement laissé passer.
la source
Pour sortir complètement d'une boucle foreach, break est utilisé;
Pour passer à l'itération suivante de la boucle, continue est utilisé;
La coupure est utile si vous parcourez une collection d'objets (comme des lignes dans une table de données) et que vous recherchez une correspondance particulière, lorsque vous trouvez cette correspondance, il n'est pas nécessaire de continuer à travers les lignes restantes, donc vous voulez rompre en dehors.
Continuer est utile lorsque vous avez accompli ce dont vous avez besoin dans une itération en boucle. Vous devrez normalement continuer après un if .
la source
si vous ne voulez pas utiliser break, augmentez simplement la valeur de I de manière à rendre la condition d'itération fausse et la boucle ne s'exécutera pas à la prochaine itération.
la source
Comme pour les autres langues:
la source