Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Value |
|---|---|
| ID da regra | IDE0410 |
| Título | Usar a instrução de salto rotulada |
| Categoria | Style |
| Subcategoria | Regras de idioma (preferências de bloco de código) |
| Idiomas aplicáveis | C# 15+ |
| Opções | csharp_style_prefer_labeled_jump_statements |
Visão geral
Para um fluxo de controle de laços aninhados mais claro e conciso, esta regra sinaliza códigos que usam instruções goto ou padrões de sinalizador booleano para sair de ou continuar laços aninhados, quando uma instrução break ou continue com rótulo (C# 15+) poderia ser usada em vez disso.
A regra detecta os seguintes padrões:
- Uma
gotoinstrução que salta para um rótulo imediatamente após um loop aninhado, que pode ser substituído porbreak <label>. - Uma
gotoinstrução que salta para um rótulo vazio no final do corpo do loop (continuando efetivamente o loop externo), que pode ser substituído porcontinue <label>. - Um padrão de sinalizador booliano, em que uma variável de sinalizador é definida
truee, em seguida, marcada em cada nível de loop para propagar uma quebra ou continuar para fora por loops aninhados, que podem ser substituídos por um único rotuladobreak <label>oucontinue <label>.
Opções
As opções especificam o comportamento que você deseja que a regra imponha. Para obter informações sobre opções de configuração, consulte Formato para opções.
csharp_style_prefer_labeled_jump_statements
| Propriedade | Value | Descrição |
|---|---|---|
| Nome da opção | csharp_style_prefer_labeled_jump_statements | |
| Valores da opção | true |
Preferir instruções de salto rotuladas |
false |
Desabilita a regra | |
| Valor da opção padrão | true |
Example
Os exemplos a seguir mostram os três padrões que esta regra detecta:
goto substituído por rótulo 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 substituído por rótulo 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;
}
}
Padrão de sinalizador substituído pelo rótulo de interrupção
// 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;
}
}
}
Suprimir um aviso
Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.
#pragma warning disable IDE0410
// The code that's violating the rule is on this line.
#pragma warning restore IDE0410
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.
[*.cs]
dotnet_diagnostic.IDE0410.severity = none
Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style como none no arquivo de configuração.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.