Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| 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 birgotoifadesi. -
gotodöngü gövdesinin sonunda boş bir etikete atlayan (etkin bir şekilde dış döngüye devam eden) deyimi ilecontinue <label>değiştirilebilir. - Bir bayrak değişkeninin
trueolarak 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 etiketlibreak <label>veyacontinue <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.