Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Property | Value |
|---|---|
| Regel-ID | IDE0410 |
| Title | Gelabelde spronginstructie gebruiken |
| Categorie | Style |
| Subcategorie | Taalregels (voorkeuren voor codeblok) |
| Toepasselijke talen | C# 15+ |
| Options | csharp_style_prefer_labeled_jump_statements |
Overzicht
Voor een duidelijkere, beknoptere besturingsstroom van geneste lussen markeert deze regel code die gebruikmaakt van goto-instructies of Booleaanse vlagpatronen om uit geneste lussen te breken of deze voort te zetten, terwijl in plaats daarvan een gelabelde break- of continue-instructie (C# 15+) kan worden gebruikt.
De regel detecteert de volgende patronen:
- Een
goto-statement dat naar een label springt dat zich onmiddellijk na een geneste lus bevindt, en dat kan worden vervangen doorbreak <label>. - Een
gotoinstructie die naar een leeg label aan het einde van de lustekst springt (effectief doorgaan met de buitenste lus), die kan worden vervangen doorcontinue <label>. - Een patroon met een Booleaanse vlag, waarbij een vlagvariabele op
truewordt ingesteld en vervolgens op elk lusniveau wordt gecontroleerd om een break of continue naar buiten door geneste lussen heen te propagëren, wat kan worden vervangen door één gelabeldebreak <label>ofcontinue <label>.
Opties
Met opties geeft u het gedrag op dat door de regel moet worden afgedwongen. Zie Optieindeling voor meer informatie over het configureren van opties.
csharp_style_prefer_labeled_jump_statements
| Property | Value | Beschrijving |
|---|---|---|
| Optienaam | csharp_style_prefer_labeled_jump_statements | |
| Optiewaarden | true |
Geef de voorkeur aan gelabelde spronginstructies |
false |
Hiermee wordt de regel uitgeschakeld | |
| standaardoptiewaarde | true |
Example
In de volgende voorbeelden ziet u de drie patronen die door deze regel worden gedetecteerd:
goto vervangen door break-label
// Code with violations.
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
if (x * y > 20)
goto found;
}
}
found:
Console.WriteLine("Done");
// Fixed code.
found: for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
if (x * y > 20)
break found;
}
}
Console.WriteLine("Done");
goto vervangen door continue label
// Code with violations.
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
goto next;
}
next: ; // The empty statement is required; a label in C# must be followed by a statement.
}
// Fixed code.
next: for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
continue next;
}
}
Vlagpatroon vervangen door onderbrekingslabel
// Code with violations.
bool found = false;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i * j > 20)
{
found = true;
break;
}
}
if (found)
break;
}
// Fixed code.
loop_i: for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i * j > 20)
{
break loop_i;
}
}
}
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable IDE0410
// The code that's violating the rule is on this line.
#pragma warning restore IDE0410
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.
[*.cs]
dotnet_diagnostic.IDE0410.severity = none
Als u alle regels voor de codestijl wilt uitschakelen, stelt u de ernst voor de categorie Style in op none in het configuratiebestand.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.