goto en C#

Fil Zjazel Romaeus Villegas 12 octubre 2023
goto en C#

Este tutorial demostrará cómo usar la sintaxis goto en C# y proporcionará algunos ejemplos de uso práctico en su código.

goto es una declaración de salto incondicional de que el programa irá automáticamente a una nueva parte del código una vez encontrada. Para usar goto, debe tener tanto una declaración marcada por una etiqueta como una instancia que llame a la etiqueta.

Para crear una etiqueta, agregue su nombre con dos puntos antes de la instrucción que desea que se ejecute cuando se llame a la etiqueta.

Ejemplo:

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();
    }
  }
}

Inicializamos la variable entera a para que sea igual a uno en este ejemplo. Dado que llamamos inmediatamente a goto para saltar a la declaración print_a, a nunca se establece en dos. Por lo tanto, cuando imprimimos el valor de a en la consola, lo que se publica es 1 y no 2.

Producción :

1

Cuándo usar goto en C#

Sin embargo, goto no se usa con tanta frecuencia ahora, ya que ha sido criticado por empeorar la legibilidad del código porque el flujo de la lógica no es tan claro si requiere que salte a una sección completamente diferente.

Sin embargo, todavía hay algunos casos en los que goto puede ser beneficioso y mejorar la legibilidad. Por ejemplo, puede escapar de bucles anidados y sentencias de cambio.

Ejemplo:

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");
    }
  }
}

En el ejemplo anterior, creamos una función de muestra para hacer diferentes cosas según el valor pasado. Se están considerando tres casos. La primera es si el valor es igual a 1. Si este es el caso, sumaremos al valor de entrada y luego procederemos al caso 2 usando la función goto. El valor de entrada habría permanecido sin cambios si no se hubiera llamado a goto.

En el caso 2, dividimos la entrada por 2. Por último, cualquier otro valor pasado se incluirá en el caso predeterminado y no se modificará en absoluto. Finalmente, se imprime el valor final y muestra que los casos 1 y 2 darán como resultado el mismo valor absoluto. Debido a goto, el caso se puede aplicar incluso si inicialmente no cumplió con las especificaciones del caso saltando a su declaración.

Producción :

Input Being Tested: 2
Final Value: 1

Input Being Tested: 1
Final Value: 1

Input Being Tested: 3
Final Value: 3

Artículo relacionado - Csharp Statement