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 instrução de salto identificada |
| 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 obter um fluxo de controle de loops aninhados mais claro e conciso, esta regra sinaliza códigos que usam instruções goto ou padrões com sinalizadores booleanos para sair de loops aninhados ou continuar sua execução, quando uma instrução com rótulo break or continue statement (C# 15+) poderia ser utilizada.
A regra detecta os seguintes padrões:
- Uma instrução
gotoque salta para um rótulo imediatamente após um loop aninhado, que pode ser substituído porbreak <label>. - Uma instrução
gotoque 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 com sinalização booleana, no qual uma variável de sinalização é definida como
truee, em seguida, verificada em cada nível do loop para propagar um break or continue para fora por loops aninhados, podendo ser substituído por uma única instruçãobreak <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 pelo 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 pelo 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 sinalização substituído pelo rótulo break
// 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.