Použití příkazu jump s popiskem (IDE0410)

Vlastnictví Value
Identifikátor pravidla IDE0410
Titul Použití příkazu jump s popiskem
Category Style
Podkategorie Jazyková pravidla (předvolby bloku kódu)
Příslušné jazyky C# 15+
Možnosti csharp_style_prefer_labeled_jump_statements

Přehled

Pro jasnější a stručnější řízení toku vnořených smyček toto pravidlo označí kód, který používá příkazy goto nebo vzory s logickými příznaky k opuštění vnořených smyček nebo k pokračování v nich, pokud lze místo toho použít pojmenovaný příkaz break nebo continue (C# 15+).

Pravidlo rozpozná následující vzory:

  • Příkaz goto , který přeskočí na popisek bezprostředně za vnořenou smyčkou, kterou lze nahradit break <label>.
  • Příkaz goto, který skočí na prázdné návěští na konci těla smyčky (což fakticky znamená pokračování vnější smyčky), lze nahradit příkazem continue <label>.
  • Schéma s logickým příznakem, kdy je proměnná příznaku nastavena na true a poté je kontrolována na každé úrovni smyčky, aby se příkaz break nebo continue přenesl směrem ven přes vnořené smyčky, přičemž toto schéma lze nahradit jediným označeným break <label> nebo continue <label>.

Možnosti

Možnosti určují chování, které má pravidlo vynutit. Informace o konfiguraci možností naleznete v tématu Formát možností.

csharp_style_upřednostňovat_pojmenované_příkazy_skoku

Vlastnictví Value Description
Název možnosti csharp_style_prefer_labeled_jump_statements
Hodnoty možností true Preferovat příkazy pro přeskakování s popisky
false Zakáže pravidlo.
Výchozí hodnota možnosti true

Example

Následující příklady ukazují tři vzory, které toto pravidlo rozpozná:

goto nahrazeno návěštím break

// 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 nahrazeno popiskem continue

// 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;
    }
}

Vzor příznaku nahrazen popiskem přerušení

// 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;
        }
    }
}

Potlačení upozornění

Pokud chcete potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

#pragma warning disable IDE0410
// The code that's violating the rule is on this line.
#pragma warning restore IDE0410

Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .

[*.cs]
dotnet_diagnostic.IDE0410.severity = none

Pokud chcete zakázat všechna pravidla stylu kódu, nastavte závažnost pro kategorii Style na none v konfiguračním souboru.

[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také