Vraag Hoe uit meerdere lussen tegelijk in C # te breken?


Wat als ik geneste lussen heb en ik wil ze allemaal tegelijk uitbreken?

while (true) {
    // ...
    while (shouldCont) {
        // ...
        while (shouldGo) {
            // ...
            if (timeToStop) {
                break; // Break out of everything?
            }
        }
    }
}

In PHP, break neemt een argument voor het aantal lussen om uit te breken. Kan zoiets als dit worden gedaan in C #?

Hoe zit het met iets afschuwelijk, zoals goto?

// In the innermost loop
goto BREAK
// ...
BREAK: break; break; break;

58
2018-02-26 02:29


oorsprong


antwoorden:


Extraheer je geneste lussen in een functie en dan kun je terugkeer gebruiken om overal uit de lus te komen, in plaats van te breken.


76
2018-02-26 02:32



Introduceer een andere controlevlag en zet deze in al je genestelde toestand, zoals hieronder. Vervangt ook de while (ware) conditie die je daarmee hebt

bool keepLooping = true;
while (keepLooping) {
    // ...
    while (shouldCont && keepLooping) {
        // ...
        while (shouldGo && keepLooping) {
            // ...
            if (timeToStop) { 
                keepLooping  = false;
                break; // break out of everything?
            }
        }  
    }
}

59
2018-02-26 03:17



Ga naar is alleen afschuwelijk wanneer misbruikt. Om uit de binnenste lus van een nest te vallen, is het acceptabel. MAAR ... je moet je afvragen waarom er in de eerste plaats zoveel nestelt.

Kort antwoord: Nee.


22
2018-02-26 02:31



Als u een volledige methode wilt doorbreken, gebruikt u de onderstaande code.      Als u alleen wilt breken met een reeks lussen binnen een methode zonder de methode te doorbreken, dan zal een van de antwoorden die al zijn gepost, de klus klaren.

if (TimeToStop)
{
   return;
}

2
2018-02-08 17:35