ich ein Betriebssystem mit Cosmos machte
Um irgendwelche entfernt nützliche Antworten zu erhalten, denke ich, dass Sie einige Informationen über den Umfang des Betriebssystems geben müssen. Fummeln Sie nur ein wenig mit COSMOS herum oder haben Sie einen speziellen Anwendungsfall, den Sie mit einem benutzerdefinierten COSMOS-Betriebssystem bedienen möchten?
und wollen goto verwenden, um die Benutzereingabe
Besonders im letzteren Fall (Fach OS) Sie sollte klar verzichten auf GOTO, wenn Sie einen sehr guten Grund zu gehen zu tue dies (und meiner bescheidenen Meinung nach gibt es keinen wirklich guten Grund, GOTO zu benutzen). Es gibt brauchbare Alternativen zu GOTOs in modernen Programmiersprachen und Sie sollten Ihr Design, Algorithmus, was auch immer überdenken.
Um Ihre Frage zu beantworten. Hier ist ein Beispiel, das die sehr Fehlermeldung erzeugt Sie erleben
private void FirstMethod()
{
goto MyLabel;
}
private void SecondMethod()
{
MyLabel:
return;
}
Ich habe ein Label in Method
definiert. Wie auch immer, von Main
kann man nicht einfach von main zu einer anderen Methode springen, da der Compiler nach Beendigung der Methode nicht wissen würde, wohin er zurückkehren soll, da keine Daten auf GOTO zum Aufruf-Stack übertragen worden wären (siehe the Wikipedia page about the call stack) Information).
Die folgende, wie auch immer, funktionieren würde, da das Etikett und die GOTO im gleichen Umfang leben
void MyMethod()
{
goto MyLabel;
// do something
MyLabel:
return;
}
und der cosmo-Code ?? –
In C# können Sie nur eine beschriftete Anweisung ("https://msdn.microsoft.com/en-us/library/13940fs2.aspx") aufrufen. Sie können sicherlich nicht zu einer Variablen gehen (was auch immer das bedeutet). – Richard
Warum genau willst du goto überhaupt verwenden? – Sayse