[Proposal]: Labeled `break` and `continue` Statements (VS 18.8, .NET 11)
Author: CyrusNajmabadiCreated Dec 14, 2025Updated Aug 12, 2026
LabelsProposal championImplemented Needs ECMA Spec
Labeled break and continue Statements
- Specification: https://github.com/dotnet/csharplang/blob/main/proposals/csharp-15.0/labeled-break-continue.md
- Discussion: https://github.com/dotnet/csharplang/discussions/9876
Summary
Allow break and continue statements to optionally specify a label that identifies which loop or switch
statement to target, enabling cleaner control flow in nested constructs without requiring goto statements.
For example:
```csharp
outer: for (int x = 0; x < xMax; x++)
{
for (int y = 0; y < yMax; y++)
{
if (ShouldSkipRest(x, y))
continue outer;
if (ShouldExitAll(x, y))
break outer;
}
}Design meetings
- https://github.com/dotnet/csharplang/blob/main/meetings/2026/LDM-2026-01-12.md#labeled-break-and-continue-statements
- https://github.com/dotnet/csharplang/blob/main/meetings/2026/LDM-2026-04-15.md#labeled-break-and-continue
- https://github.com/dotnet/csharplang/blob/main/meetings/2026/LDM-2026-06-08.md#labeled-break-and-continue
Source: dotnet/csharplang