Jump Statements (goto)
Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 20 de 66.
La instrucción goto en C# proporciona una forma de transferir el control directamente a una instrucción etiquetada dentro del mismo método.
Crea una etiqueta en tu código:
start:Utilice la instrucción goto para saltar a esa etiqueta:
goto start;Aquí tienes un ejemplo simple que utiliza goto para crear un bucle:
int i = 0;
start:
if (i < 5)
{
Console.WriteLine(i);
i++;
goto start;
}Después de ejecutar el código anterior, la salida será:
0
1
2
3
4Aunque goto existe en C#, generalmente se recomienda usar declaraciones de control de flujo estructuradas (if, for, while, etc.) en su lugar, ya que hacen que el código sea más legible y mantenible.
Desafío
FácilCrea un método llamado ProcessCommands que tome un argumento:
- Una cadena (
command) que contiene un comando para procesar.
El método debe implementar un procesador de comandos simple usando instrucciones goto:
- Si el comando es "start", imprime "Starting process" y luego salta a la etiqueta "end"
- Si el comando es "stop", imprime "Stopping process" y luego salta a la etiqueta "end"
- Si el comando es "pause", imprime "Pausing process" y luego salta a la etiqueta "end"
- Si el comando es cualquier otra cosa, imprime "Unknown command" y luego salta a la etiqueta "end"
- En la etiqueta "end", imprime “Command processed”
Hoja de referencia
La instrucción goto transfiere el control directamente a una instrucción etiquetada dentro del mismo método.
Crear una etiqueta:
start:Saltar a una etiqueta usando goto:
goto start;Ejemplo usando goto para crear un bucle:
int i = 0;
start:
if (i < 5)
{
Console.WriteLine(i);
i++;
goto start;
}Aunque goto existe en C#, las instrucciones de control de flujo estructurado (if, for, while, etc.) se recomiendan generalmente para una mejor legibilidad y mantenibilidad del código.
Pruébalo tú mismo
using System;
public class Program
{
public static void ProcessCommands(string command)
{
// Escribe tu código aquí
}
public static void Main(string[] args)
{
string command = Console.ReadLine();
ProcessCommands(command);
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety