I'm writing a function like in C#:
public void CountNumber()
{
for(int i = 0; i < 40; i++) {
if(i > 20) {
goto out1;
}
Console.WriteLine("hello " + 1);
out1:
string hello = "";
}
}
This basically counts the number and if the i is greater than 20 it should not write to console.writeline. it should step over and hit "out1" but the "out1" needs to have a function in the end to compile. It needs to have "string hello = """ to compile. I don't need the "string hello = """. I just want it to do nothing and got the end of the loop. Is there a way to do this without the "string hello = """ that the out1: statement needs? Like:
public void CountNumber()
{
for(int i = 0; i < 40; i++) {
if(i > 20) {
goto out1;
}
Console.WriteLine("hello " + 1);
out1:
}
}
Thanks.
Though it is absolutely correct to say that there are better ways to solve this problem than to use goto, I note that no one has actually answered your question.
A label must label a statement. You want to go to a location that has no statement associated with it. You can either make an empty statement with a single semicolon, or an empty block.
out1:
;
}
or
out1:
{}
}
But like they say, don't go there in the first place if you can avoid it.
This loop could easily be written many other ways - you could just loop while i<=20
instead of i<40
(best), or move the Console.WriteLine
call into the if statement with the if inverted.
However, I'm assuming you're trying to work with a more elaborate scenario in your "real" case. If that's the case, instead of using goto
, just use continue
to skip the rest of the loop:
public void CountNumber()
{
for(int i = 0; i < 40; i++) {
if(i > 20) {
continue; // Skips the rest of this loop iteration
}
Console.WriteLine("hello " + 1);
}
}
Similarly, you can use break
to completely break out of the loop and not process more elements, if that's more appropriate in your real case.
Just invert your condition - also if...else
might be an alternative. I assume there is other code otherwise you can just change the for
loop itself to just count up to 20.
for(int i = 0; i < 40; i++)
{
if(i <= 20)
{
Console.WriteLine("hello " + 1);
}
//other code
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With