Que se passe-t-il si j’ai des boucles nestedes et que je veux les éliminer toutes en même temps?
while (true) { // ... while (shouldCont) { // ... while (shouldGo) { // ... if (timeToStop) { break; // Break out of everything? } } } }
En PHP, break
prend un argument pour le nombre de boucles à sortir. Est-ce que quelque chose comme ça peut être fait en C #?
Qu’en est-il de quelque chose d’hideux, comme goto
?
// In the innermost loop goto BREAK // ... BREAK: break; break; break;
Extrayez vos boucles nestedes dans une fonction et vous pouvez utiliser return pour sortir de la boucle de n’importe où, plutôt que de casser.
Introduisez un autre drapeau de contrôle et mettez-le dans toutes vos conditions nestedes comme ci-dessous. Remplace également la condition while (true) que vous avez avec cette
bool keepLooping = true; while (keepLooping) { // ... while (shouldCont && keepLooping) { // ... while (shouldGo && keepLooping) { // ... if (timeToStop) { keepLooping = false; break; // break out of everything? } } } }
Goto n’est que hideux lorsqu’il est maltraité. Pour sortir de la boucle la plus profonde de l’imbrication, c’est acceptable. MAIS … il faut se demander pourquoi il y a tant de nidification en premier lieu.
Réponse courte: non
Si vous souhaitez sortir d’une méthode complète, utilisez le code ci-dessous. Si vous souhaitez uniquement sortir d’une série de boucles au sein d’une méthode sans sortir de la méthode, l’une des réponses déjà affichées fera l’affaire.
if (TimeToStop) { return; }