Etiketli atlama deyimini kullanma (IDE0410)

Mülkiyet Değer
Kural Kimliği IDE0410
Title Etiketli atlama ifadesini kullanın
Category Style
alt kategorisi Dil kuralları (kod bloğu tercihleri)
Geçerli diller C# 15+
Options csharp_style_prefer_labeled_jump_statements

Genel bakış

İç içe döngülerde denetim akışını daha açık ve daha özlü hale getirmek için bu kural, bunun yerine etiketli break veya continue deyimi (C# 15+) kullanılabilecekken, iç içe döngülerden çıkmak veya onları sürdürmek için goto deyimlerini ya da Boole bayrağı kalıplarını kullanan kodu işaretler.

Kural aşağıdaki desenleri algılar:

  • İç içe bir döngüden hemen sonra gelen bir etikete atlayan ve break <label> ile değiştirilebilen bir goto ifadesi.
  • goto döngü gövdesinin sonunda boş bir etikete atlayan (etkin bir şekilde dış döngüye devam eden) deyimi ile continue <label>değiştirilebilir.
  • Bir bayrak değişkeninin true olarak ayarlanıp ardından break veya continue işlemini iç içe döngüler boyunca dışa doğru iletmek için her döngü düzeyinde kontrol edildiği Boole bayrağı deseni, tek bir etiketli break <label> veya continue <label> ile değiştirilebilir.

Options

Seçenekler, kuralın zorlamasını istediğiniz davranışı belirtir. Seçenekleri yapılandırma hakkında bilgi için bkz. Seçenek biçimi.

csharp_style_prefer_labeled_jump_statements

Mülkiyet Değer Description
Seçenek adı csharp_stili_etiketli_atlama_ifadelerini_tercih_et
Seçenek değerleri true Etiketli atlama ifadelerini tercih edin
false Kuralı devre dışı bırakır
Varsayılan seçenek değeri true

Example

Aşağıdaki örneklerde bu kuralın algıladği üç desen gösterilmektedir:

goto, break etiketiyle değiştirildi

// 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, continue etiketiyle değiştirildi

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

Bayrak deseni sonlandırma etiketiyle değiştirildi

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

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, none önem derecesini olarak ayarlayın.

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

Kod stili kuralların tümünü devre dışı bırakmak için, kategorinin Stylenone önem derecesini yapılandırma dosyasında olarak ayarlayın.

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

Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.

Ayrıca bakınız