In C#, the goto statement transfers control to some other part of the program. For example,
goto label;
...
...
label:
...
...
Here, label is an identifier. When goto label; is encountered, the control of the program is transferred to label:. Then the code below label: is executed.
Example: C# goto
using System;
namespace CSharpGoto {
class Program {
public static void Main(string[] args) {
// label
repeat:
Console.WriteLine("Enter a number less than 10");
int num = Convert.ToInt32(Console.ReadLine());
if(num >= 10) {
// transfers control to repeat
goto repeat;
}
Console.WriteLine(num + " is less than 10");
Console.ReadLine();
}
}
}
Output
Enter a number less than 10 99 Enter a number less than 10 9 9 is less than 10
In the above program, we have a goto statement inside the if statement.
If the entered number is not less than 10, goto repeat: transfers the control of the code to repeat:. Then, the code below repeat: is executed.
The control of code will be transferred to the repeat: label unless the entered number is less than 10.
C# goto with switch statement
In C#, we can use goto with a switch statement to transfer control of a program to a specific case. For example,
using System;
namespace CSharpGoto {
class Program {
public static void Main(string[] args) {
Console.Write("Choose your coffee? milk or black: ");
string coffeeType = Console.ReadLine();
switch (coffeeType) {
case "milk":
Console.WriteLine("Can I have a milk coffee?");
break;
case "black":
Console.WriteLine("Can I have a black coffee?");
// transfer code to case "milk"
goto case "milk";
default:
Console.WriteLine("Not available.");
break;
}
Console.ReadLine();
}
}
}
Output
Can I have a black coffee? Can I have a milk coffee?
In the above program, we have used the goto statement with a switch statement.
We have entered "black" as the coffeeType. Now the case "black" is executed.
Inside the case, we have used goto case "milk"; which will transfer the control of the program to the case "milk".
Hence, both cases are executed.
goto with for Loop
In C#, we can use goto to break out of a for loop. For example,
using System;
namespace CSharpGoto {
class Program {
static void Main() {
for(int i = 0; i <= 10; i++) {
if(i == 5) {
// transfers control to End label
goto End;
}
Console.WriteLine(i);
}
// End label
End:
Console.WriteLine("Loop End");
Console.ReadLine();
}
}
}
Output
0 1 2 3 4 Loop End
In the above program, we have created a for loop. It iterates from 0 to 100.
Whenever the value of i equals 5, the goto statement transfers the control of code to the End label. Hence, the program breaks out of the for loop.