Det kan godt være, at man kan break en parent loop.. men ved ikke lige hvordan, da man jo skal definere loopen, og ikke en label (som man kan "goto", f.eks.)..
Det ville ellers være godt, hvis man kunne springe ud af en hvilken som helst loop.. Hvis ikke, kan man programmere sig ud af det, som eksemplet i 13/08-2006 15:29:15.
Gad vide hvad der er bedst.. at have checket (IF-sætningen) før eller efter den indre loop..
Det må nok være efter indre-loop, da den skal kunne hoppe helt ud, så snart at betingelsen er opfyldt..
På den anden side.. hvis hop_ud ikke sættes på linien før ydre-loop, ville det også være en god ide, at checket er den første linie i ydre-loop.
Men i en situation som den nuværende, ville jeg nok side at checket skulle være lige efter indre-loop..
arne_v> Hvis "hvorfor ikke bruge goto ?" var til mig:
Normalt bruger jeg ikke labels og goto.. ikke fordi mange påstår, at det er dårlig programmeringsskik, hvilket jeg ikke synes at det er.. men det er sjældent jeg er i en situation hvor jeg har brug for det.
Jeg bruger typisk labels og goto når jeg programmer/laver batch (.bat) filer, hvor det kan være særdeles fordelagtigt, at kunne hoppe til et bestemt sted, og udføre noget betinget kode.
Eksempel med Java, hvor den vil gå til linie 09, når både "i" og "ii" er lig 5: 01: ydre: 02: for(int i=0;i<10;i++){ 03: for(int ii=0;ii<10;ii++){ 04: if(i==5 && ii=5){ 05: break ydre; 06: } 07: } 08: } 09: hello world
..det er hvis goto i C# fungerer ligesom goto i en .bat fil..
Dvs, når den har løbet "i" og "ii" igennem, og begge værdier er lig 5, vil den starte forfra, med at løbe ind if for-løkken, og loop indtil "i" og "ii" er lig 5, hvorefter den gentager igen.. og igen.. og igen.. en evig loop.
Med break, hvis det er ligesom JavaScript (og C#), vil den først hoppe ud af "ii++"-loopen, og fortsætte med "i++" loopen, og til sidst vil den fortsætte med linie 09.
Dvs, break hopper ikke direkte til linie 09, men fortsætter med "i++"-loopen, hvilket er overflødigt, så derfor ville man normalt lave et check, som hoppe ud af "i++"-loppen.
Her er det smarte så, hvis man kan breake en bestemt for-løkke.
Jeg har ikke prøvet labels i Java, men for mig ser det ikke ud til at man kan gøre det, på den måde, for label'en har jo ikke noget med for-løkken at gøre..
Hvis "break ydre;" virker, må det svare til "goto ydre;".
Jeg har bare aldrig set "break ydre;", men har ofte brugt "goto ydre", i f.eks. .bat filer (og vist nok også Basic på Commodore 64).. så goto virker mere logisk for mig.. :-)
Ja som folk nu nok efterhånden har opdaget, så giver virkemåden i Java god mening, da du beder den om at "break" en blok, dvs. afslutte en blok... mens i C# beder du den "goto" en label, dvs hoppe til et givent punkt i koden, syns jeg personligt giver god mening....
Sikke da en lang udredning I fik lavet - jeg skulle bare vide, om der var et simpelt alternativ. Det ser ud til, at det må være goto. Tak for hjælpen. Lægger I et svar?
det er nok mest min skyld at det blev trukket ud fordi jeg kludrede i det med .NET 2.0 testen i foerste omgang og ikke fik placeret labelen korrekt i goto eksemplet
Nu kan labels rent faktisk give performance forbedringer, selv om de måske er til at vrinke på næsen af til at starte med, så er kan de blive meget nyttige...
Deusden, så overvej din egen løsning i længden... hvis du begynder at udvide koden meget, så vil jeg mene at et label vil kunne give mere overskuelighed i hvad der sker, end det du laver...
Det virker måske som en YDERST usandsynlig nødvendighed at hoppe sådan rundt i tingene... never det less så sker det faktisk for visse algoritmer at man med fordel kan speede dem op ved at gøre det....
Det her er naturligvis et tænkt eksempel, men jeg har set det blive brugt smart hvor "lyset" ligsom går op for en
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.