I am converting some Java code to C# and have found a few labelled “break” statements (e.g.)
label1: while (somethingA) { ... while (somethingB) { if (condition) { break label1; } } }
Is there an equivalent in C# (current reading suggests not) and if not is there any conversion other than (say) having bool flags to indicate whether to break at each loop end (e.g.)
bool label1 = false; while (somethingA) { ... while (somethingB) { if (condition) { label1 = true; break; } } if (label1) { break; } } // breaks to here
I’d be interested as to why C# doesn’t have this as it doesn’t seem to be very evil.
Advertisement
Answer
You can just use goto
to jump directly to a label.
while (somethingA) { // ... while (somethingB) { if (condition) { goto label1; } } } label1: // ...
In C-like languages, goto
often ends up cleaner for breaking nested loops, as opposed to keeping track of boolean variables and repeatedly checking them at the end of each loop.