Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is there a equivalent of Java's labelled break in C# or a workaround

Tags:

java

c#

label

break

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.

like image 433
peter.murray.rust Avatar asked Oct 10 '09 14:10

peter.murray.rust


People also ask

What can I use instead of a break in C?

Using goto is the ubiquitous, always available, alternative, but is often regarded as anathema (certainly in comparison with break and continue ).

How is break statement different from Labelled break?

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.

What is labeled break statement?

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.

What is the syntax of break?

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.


1 Answers

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.

like image 115
Mark Rushakoff Avatar answered Sep 21 '22 12:09

Mark Rushakoff