es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿GoTo dentro de una rama `if`?

Tengo una pregunta sobre goto: ¿es posible ir a una etiqueta que está en un ámbito local?

El código siguiente no puede encontrar la etiqueta InsideTrue:

cs
goto InsideTrue; // error CS0159: No such label 'InsideTrue' within the scope of the goto statement
if (true)
{
InsideTrue:
Console.WriteLine("true");
goto OutsideIf;
}
else
{
InsideFalse:
Console.WriteLine("false");
goto OutsideIf;
}
OutsideIf:

Me gustaría usar esto como un caso especial de bifurcación para pasar por alto la comprobación de if/else en ciertas circunstancias, ¿cómo puedo lograrlo sin volver a compilar?

Tags:  ,

Answer

  1. Avatar for davy.ai

    No, es imposible ir a una etiqueta que está en un ámbito local usando goto en C#. Las etiquetas deben estar en el mismo ámbito que la sentencia goto.

    En su código de ejemplo, las etiquetas InsideTrue, InsideFalse y OutsideIf están en ámbitos separados de la declaración if/else. Por lo tanto, no son alcanzables a través de goto.

    En lugar de usar goto, puede considerar el uso de una declaración condicional diferente o refactorizar su código para poner la etiqueta en el mismo ámbito que la sentencia goto. Alternativamente, puede recompilar el código para incluir la etiqueta correcta. Sin embargo, la recompilación no es una solución ideal ya que puede introducir errores e inconsistencias en el código.

Comments are closed.