Jest taka instrukcja w programowaniu (głównie strukturalnym- bo w programowaniu liniowym nie da się bez niej obejść), która jest bardziej znienawidzona niż php, java, sharepoint i windows millenium razem wzięte.
Mówię o GOTO. Czyli skok do labelki, rodem z basica czy asma.
Podobno bywa użyteczny w sytuacjach zbliżonych do
1 2 3 4 5 6 7 8 9 10 | for (...) { for (...) { ... if (cośtam) goto koniec; } } koniec: //jakiś kod |
Acz ma jeszcze jedno zastosowanie.
W c# nie ma tak, że jak jedna sekcja case w switchu się skończy, to można przejść do następnej. Musimy na koniec dać albo return, albo break, albo throw, albo… goto case;P
I to jest chyba jedyny przypadek, kiedy cię nie zjedzą za użycie goto. Weźmy taki przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | switch (str) switch (str) { case "cos" : Console.WriteLine( "cos napisano" ); break ; case "byle co" : Console.WriteLine( "byle co napisano" ); break ; case "cos innego" : Console.WriteLine( "cos innego napisano" ); goto case "cos" ; default : Console.WriteLine( "Za cholere nie wiem co napisano" ); break ; } |
Tylko czy ktoś tego rzeczywiście użył?