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.
Using goto is the ubiquitous, always available, alternative, but is often regarded as anathema (certainly in comparison with break and continue ).
Answer. Labelled break can be used to exit out of a deeply nested set of loops whereas Unlabelled break only exits from the loop within which it is enclosed.
The break Statement This is the output of the program. The break statement terminates the labeled statement; it does not transfer the flow of control to the label. Control flow is transferred to the statement immediately following the labeled (terminated) statement.
The break statement ends the loop immediately when it is encountered. Its syntax is: break; The break statement is almost always used with if...else statement inside the loop.
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.
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