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

12,359

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.

Share:
12,359
peter.murray.rust
Author by

peter.murray.rust

for details and photo: Wikipedia entry

Updated on June 04, 2022

Comments

  • peter.murray.rust
    peter.murray.rust about 2 years

    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.