Usar la instrucción de salto etiquetada (IDE0410)

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 goto que salta a una etiqueta situada inmediatamente después de un bucle anidado y que puede sustituirse por break <label>.
  • Una instrucción goto que 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 por continue <label>.
  • Un patrón de indicador booleano, en el que una variable indicadora se establece en true y 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ón break <label> o continue <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.

Consulte también