Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Propiedad | Value |
|---|---|
| Identificador de la regla | IDE0410 |
| Title | Usar la instrucción de salto etiquetada |
| Category | Style |
| Subcategoría | Reglas de lenguaje (preferencias de bloque de código) |
| Idiomas aplicables | C# 15+ |
| Options | csharp_style_prefer_labeled_jump_statements |
Visión general
Para obtener un flujo de control de bucle anidado más claro y conciso, esta regla marca el código que usa instrucciones goto o patrones de marca booleana para interrumpir o continuar bucles anidados, cuando se podría usar una instrucción etiquetada break o continue (C# 15+) en su lugar.
La regla detecta los siguientes patrones:
- Una instrucción
gotoque salta a una etiqueta situada inmediatamente después de un bucle anidado y que puede sustituirse porbreak <label>. - Una instrucción
gotoque salta a una etiqueta vacía al final del cuerpo del bucle, lo que en la práctica equivale a continuar con el bucle externo, y que se puede reemplazar porcontinue <label>. - Un patrón de indicador booleano, en el que una variable indicadora se establece en
truey luego se comprueba en cada nivel del bucle para propagar un break o continue hacia niveles exteriores de bucles anidados, que puede sustituirse por una única instrucciónbreak <label>ocontinue <label>con etiqueta.
Opciones
Las opciones especifican el comportamiento que se quiere que aplique la regla. Para obtener información sobre cómo configurar opciones, vea Formato de opción.
csharp_style_prefer_labeled_jump_statements
| Propiedad | Value | Descripción |
|---|---|---|
| Nombre de la opción | csharp_style_prefer_labeled_jump_statements | |
| Valores de opción | true |
Preferir instrucciones de salto etiquetadas |
false |
Deshabilita la regla | |
| Valor de opción predeterminado | true |
Example
En los ejemplos siguientes se muestran los tres patrones que detecta esta regla:
goto reemplazado por la etiqueta 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 reemplazado por la etiqueta 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;
}
}
Patrón de indicador sustituido por etiqueta 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;
}
}
}
Supresión de una advertencia
Si desea suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable IDE0410
// The code that's violating the rule is on this line.
#pragma warning restore IDE0410
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.
[*.cs]
dotnet_diagnostic.IDE0410.severity = none
Para deshabilitar todas las reglas de estilo de código, establezca la gravedad de la categoría Style a none en el archivo de configuración.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.