Gunakan pernyataan lompat berlabel (IDE0410)

Harta benda Value
ID Aturan IDE0410
Title Gunakan pernyataan lompat berlabel
Category Style
Subkategori Aturan bahasa (preferensi blok kode)
Bahasa yang berlaku C# 15+
Opsi csharp_style_prefer_labeled_jump_statements

Ikhtisar

Untuk alur kontrol perulangan berlapis yang lebih jelas dan ringkas, aturan ini menandai kode yang menggunakan pernyataan goto atau pola penanda Boolean untuk keluar dari atau melanjutkan perulangan berlapis, ketika pernyataan break atau continue berlabel (C# 15+) dapat digunakan sebagai gantinya.

Aturan mendeteksi pola berikut:

  • Pernyataan goto yang meloncat ke label tepat setelah loop bertingkat, yang dapat diganti dengan break <label>.
  • Pernyataan goto yang melompat ke label yang kosong di akhir badan perulangan (yang secara efektif melanjutkan perulangan luar), yang dapat diganti dengan continue <label>.
  • Pola bendera Boolean, di mana variabel bendera diatur ke true dan kemudian diperiksa di setiap tingkat perulangan untuk menyebarluaskan jeda atau melanjutkan ke luar melalui perulangan berlapis, yang dapat diganti dengan satu berlabel break <label> atau continue <label>.

Opsi

Opsi menentukan perilaku yang Anda inginkan untuk diberlakukan aturan. Untuk informasi tentang mengonfigurasi opsi, lihat Format opsi.

gaya_C#_lebih_memilih_pernyataan_lompatan_berlabel

Harta benda Value Deskripsi
Nama opsi csharp_style_prefer_labeled_jump_statements
Nilai opsi true Utamakan pernyataan lompatan berlabel
false Menonaktifkan aturan
Nilai pilihan default true

Example

Contoh berikut menunjukkan tiga pola yang dideteksi aturan ini:

goto diganti dengan label 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 digantikan oleh label 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;
    }
}

Pola bendera digantikan oleh label pemisah

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

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan direktif pra-pemrosesan ke file sumber Anda untuk menonaktifkan dan kemudian mengaktifkan kembali aturan tersebut.

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

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

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

Untuk menonaktifkan semua aturan gaya kode, atur tingkat keparahan untuk kategori Style menjadi none di dalam file konfigurasi.

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Baca juga