Je suis tombé sur cette question il y a une seconde, et j'en retire une partie du matériel: y a- t-il un nom pour la construction «break n»?
Cela semble être un moyen inutilement complexe pour les gens d'avoir à demander au programme de sortir d'une boucle for double-nested:
for (i = 0; i < 10; i++) {
bool broken = false;
for (j = 10; j > 0; j--) {
if (j == i) {
broken = true;
break;
}
}
if (broken)
break;
}
Je sais que les manuels aiment dire que les déclarations goto sont le diable, et je ne les aime pas du tout moi-même, mais cela justifie-t-il une exception à la règle?
Je cherche des réponses qui traitent des boucles n-imbriquées.
REMARQUE: Que vous répondiez oui, non ou quelque part entre les deux, les réponses totalement étroites ne sont pas les bienvenues. Surtout si la réponse est non, fournissez une bonne raison légitime (ce qui n'est pas trop loin de la réglementation Stack Exchange de toute façon).
goto
: goto (référence C #) - "L'instruction goto est également utile pour sortir des boucles profondément imbriquées."
goto
est en fait requis dans un commutateur C # pour passer à un autre cas après avoir exécuté un code à l'intérieur du premier cas. C'est le seul cas où j'ai utilisé goto, cependant.
for (j = 10; j > 0 && !broken; j--)
vous n'aurez pas besoin de l'break;
instruction. Si vous déplacez la déclaration debroken
to avant que la boucle externe ne commence, alors si cela peut être écrit comme cela,for (i = 0; i < 10 && !broken; i++)
je pense qu'aucunbreak;
s n'est nécessaire.