Entwickler-Ecke
C# - Die Sprache - Goto ausserhalb der Main-Methode
Ccenter - Do 22.07.10 15:58
Titel: Goto ausserhalb der Main-Methode
Hallo,
ich habe folgenden Code(vereinfacht):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| static void Main(string[] args) { starthere: testmethode(); }
public static void testmethode() { if(...) { goto starthere; } else { Console.WriteLine("..."); } } |
Mein Problem besteht nun darin, dass "starthere" in der Testmethode nicht erkannt wird. Wie kann man am besten das Problem lösen?
Moderiert von
Christian S.: Topic aus Sonstiges (.NET) verschoben am Do 22.07.2010 um 15:59
danielf - Do 22.07.10 16:17
Hallo,
ich kenne mich mit goto-Anweisungen nicht wirklich aus (den diese sollte man eigentlich nicht verwenden!). Aber das liegt wohl daran, dass die Markierung außerhalb der Methode ist.
Am simpelsten läßt sich das wohl durch ein Schleife lösen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| static void Main(string[] args) { TestMethode(); }
public static void TestMethode() { while (!...) { Thread.Sleep(100); }
Console.WriteLine("..."); } |
Also wie gesagt so würde sich dein Konstrukt umschreiben lassen (er bleibt aber immer noch hässlich) ;)
Gruß
Ralf Jansen - Do 22.07.10 16:20
Einfach kein goto verwenden? Wenn du schon goto benutzt solltest du uns bei dem Ruf den goto geniest hat erst mal deutlicher klar machen warum du das brauchst. Ansonsten kannst du einfach testmethode wieder aufrufen. Zumindest entspricht das in etwa deinem Beispielcode
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public static void testmethode() { if(...) { testmethode() } ... |
Th69 - Do 22.07.10 16:38
Wichtige Stichwort zum Nachschlagen: Iteration bzw. Rekursion
'goto' solltest du aber (wie schon geschrieben) besser meiden.
Ccenter - Sa 24.07.10 12:30
Ich versuche das jetzt einfach zu umgehen.
Wäre nur etwas schneller mit der goto Anweisung gewesen. Aber wenn man die nach Möglichkeit eh nicht verwenden soll,
hat sich das dann damit wohl auch erledigt.
Ich werde jetzt dem Tipp von danielf nachgehen, damit sollte das auch funktionieren.
Danke ;)
jaenicke - Sa 24.07.10 12:39
Ccenter hat folgendes geschrieben : |
Wäre nur etwas schneller mit der goto Anweisung gewesen. |
Schneller im Programm oder schneller beim Programmieren? ;-)
Wenn du statt einem guten Algorithmus / Konzept lieber schnell etwas hinbiegst, rächt sich das später meistens.
Denn fast jedes goto lässt sich durch einen guten Algorithmus vermeiden und besser programmieren wie schon gesagt wurde.
Wenn du überall gotos hast, siehst du da bald nicht mehr durch, weil du von a nach b und von x nach y springst (kein gut sichtbarer Programmablauf). Oder spätestens wenn jemand anderes den Code anschaut, sieht der nicht mehr durch. ;-)
Ccenter - Sa 24.07.10 16:45
Schneller zu programmieren :P
Aber du hast schon recht, unübersichtlicher wird es damit schon.
Was ich mich nur frage, weshalb man die goto Anweisung sonst nicht verwenden soll. Was für "Gefahren" bürgt die denn :D?
jaenicke - So 25.07.10 11:08
Die schlechte Wartbarkeit und Lesbarkeit des Codes und der Programmlogik ist der Grund.
Vom programmtechnischen Aspekt ist es kein Problem. Schließlich ist ein goto letztlich nur ein Sprung und die setzt man indirekt ja ständig ein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!