goto in C#

Fil Zjazel Romaeus Villegas 12 Oktober 2023
goto in C#

Dieses Tutorial demonstriert die Verwendung der goto-Syntax in C# und liefert einige Beispiele für die praktische Verwendung in Ihrem Code.

goto ist eine bedingungslose Sprunganweisung, dass das Programm automatisch zu einem neuen Teil des Codes springt, sobald es angetroffen wird. Um goto verwenden zu können, müssen Sie sowohl eine mit einem Label markierte Anweisung als auch eine Instanz haben, die das Label aufruft.

Um ein Label zu erstellen, fügen Sie seinen Namen mit einem Doppelpunkt vor der Anweisung hinzu, die ausgeführt werden soll, wenn das Label aufgerufen wird.

Beispiel:

using System;

namespace goto_Example1 {
  class Program {
    static void Main(string[] args) {
      int a = 1;
      goto print_a;

      a = 2;

    print_a:
      Console.WriteLine(a.ToString());

      Console.ReadLine();
    }
  }
}

In diesem Beispiel initialisieren wir die Integer-Variable a auf gleich eins. Da wir sofort goto aufrufen, um zur Anweisung print_a zu springen, wird a nie gleich zwei gesetzt. Wenn wir also den Wert von a auf der Konsole ausgeben, wird 1 und nicht 2 veröffentlicht.

Ausgabe:

1

Wann man goto in C# verwendet

Allerdings wird goto heute nicht mehr so ​​häufig verwendet, da es dafür kritisiert wurde, dass es die Lesbarkeit des Codes verschlechtert, da der logische Fluss nicht so klar ist, wenn Sie zu einem völlig anderen Abschnitt springen müssen.

Es gibt jedoch immer noch einige Fälle, in denen goto von Vorteil sein und die Lesbarkeit verbessern kann. Beispielsweise kann es verschachtelten Schleifen und switch-Anweisungen entkommen.

Beispiel:

using System;

namespace goto_Example2 {
  class Program {
    static void Main(string[] args) {
      // Intialize the integer variable a
      int a = 2;
      // Run the function test input
      TestInput(a);

      // Change the value of a and see how it affects the output from TestInput()
      a = 1;
      TestInput(a);

      a = 3;
      TestInput(a);

      Console.ReadLine();
    }

    static void TestInput(int input) {
      // In this example function, we only want to accept either 1 or 2 as values.
      // If we accept the value 1, we want to add to it and then run case 2;

      // Print the original value
      Console.WriteLine("Input Being Tested: " + input.ToString());

      switch (input) {
        case 1:
          input++;
        // If goto isn't called, the input value will not be modified, and its final value would
        // have been unchanged
        goto case 2;

            case 2:
          input = input / 2;
          break;

        default:
          break;
      }
      Console.WriteLine("Final Value: " + input.ToString() + "\n");
    }
  }
}

Im obigen Beispiel haben wir eine Beispielfunktion erstellt, um je nach übergebenem Wert unterschiedliche Dinge zu tun. Drei Fälle werden geprüft. Der erste ist, wenn der Wert gleich 1 ist. Wenn dies der Fall ist, addieren wir den Eingabewert und fahren dann mit der Funktion goto mit Fall 2 fort. Ohne den Aufruf von goto wäre der Eingabewert unverändert geblieben.

In Fall 2 teilen wir die Eingabe durch 2. Schließlich fällt jeder andere übergebene Wert unter den Standardfall und wird überhaupt nicht geändert. Schließlich wird der Endwert gedruckt und zeigt, dass die Fälle 1 und 2 zu demselben absoluten Wert führen. Aufgrund von goto kann der Fall auch dann angewendet werden, wenn er ursprünglich nicht den Fallspezifikationen entsprach, indem zu seiner Anweisung gesprungen wird.

Ausgabe:

Input Being Tested: 2
Final Value: 1

Input Being Tested: 1
Final Value: 1

Input Being Tested: 3
Final Value: 3

Verwandter Artikel - Csharp Statement