Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Property | Value |
|---|---|
| ID regola | IDE0410 |
| Titolo | Usare l'istruzione di salto etichettata |
| Categoria | Style |
| Sottocategoria | Regole del linguaggio (preferenze del blocco di codice) |
| Linguaggi applicabili | C# 15+ |
| Opzioni | csharp_style_prefer_labeled_jump_statements |
Overview
Per un flusso di controllo dei cicli annidati più chiaro e conciso, questa regola segnala il codice che usa istruzioni goto o schemi con flag booleani per uscire da cicli annidati o continuarli, quando si potrebbe invece usare un'istruzione break o continue etichettata (C# 15+).
La regola rileva i modelli seguenti:
- Un'istruzione
gotoche salta a un'etichetta immediatamente dopo un ciclo annidato, che può essere sostituita conbreak <label>. - Un'istruzione
gotoche salta a un'etichetta priva di istruzioni alla fine del corpo del ciclo (equivalendo di fatto a continuare il ciclo esterno), che può essere sostituita concontinue <label>. - Modello di flag booleano, in cui una variabile flag è impostata
truesu e quindi selezionata a ogni livello di ciclo per propagare un'interruzione o continuare verso l'esterno attraverso cicli annidati, che possono essere sostituiti con un'etichetta singolabreak <label>ocontinue <label>.
Opzioni
Le opzioni specificano il comportamento che si desidera che la regola imponga. Per informazioni sulla configurazione delle opzioni, vedere Formato delle opzioni.
csharp_style_prefer_labeled_jump_statements
| Property | Value | Description |
|---|---|---|
| Nome opzione | stile_csharp_preferire_istruzioni_di_salto_con_etichetta | |
| Valori delle opzioni | true |
Preferire le istruzioni di salto con etichetta |
false |
Disabilita la regola | |
| Valore dell'opzione predefinito | true |
Example
Gli esempi seguenti mostrano i tre modelli rilevati da questa regola:
goto sostituito da etichetta di interruzione
// 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 sostituito dall'etichetta continua
// 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;
}
}
Modello di flag sostituito dall'etichetta di interruzione
// 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;
}
}
}
Eliminare un avviso
Se si desidera eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable IDE0410
// The code that's violating the rule is on this line.
#pragma warning restore IDE0410
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .
[*.cs]
dotnet_diagnostic.IDE0410.severity = none
Per disabilitare tutte le regole in stile codice, impostare la gravità per la categoria Style su none nel file di configurazione.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.