Error del compilador · error CS1513

Se esperaba }

Un bloque se abrió con { y nunca se cerró. El número de línea del error es donde el compilador se quedó sin código — normalmente la última línea del archivo — no donde va la } que falta.

Míralo ocurrir

int x = 5;
if (x > 2)
{
    Console.WriteLine("grande");
    if (x > 4)
    {
        Console.WriteLine("enorme");
}

Dos bloques abiertos, uno cerrado. El compilador lee hasta el final del archivo, descubre que el bloque del if exterior sigue abierto y reporta se esperaba } en la última línea — lejísimos de la escena del crimen.

int x = 5;
if (x > 2)
{
    Console.WriteLine("grande");
    if (x > 4)
    {
        Console.WriteLine("enorme");
    }
}

El ritual de contar llaves (30 segundos)

  1. Pon el cursor al inicio de la función o bloque roto.
  2. Cuenta hacia abajo: +1 por cada {, −1 por cada }.
  3. La cuenta debe volver a 0 al final. Donde "debería" llegar a 0 y no llega — ahí va la llave que falta.

En Visual Studio / VS Code: haz clic en cualquier llave y su pareja se resalta. Si un { no resalta nada, encontraste el huérfano.

Las tres causas típicas

1. Borraste una línea y su llave con ella

Eliminaste un if o una llamada pero dejaste una de sus llaves — ahora otro bloque cierra demasiado pronto y todo lo posterior queda mal anidado. Síntoma: errores CS0103 extraños en variables que sabes que existen, más un CS1513 al final del archivo.

2. Pegaste código y perdiste la cola

El copiar y pegar de un tutorial trajo todo menos la última } — o trajo una de más, que produce el error espejo CS1022 ("llave } adicional").

3. Escribiste de arriba abajo sin cerrar

El honesto — lógica larga y anidada escrita de corrido. La solución que escala: escribe ambas llaves en el momento en que escribes la cabecera, y luego rellena el medio:

if (x > 2)
{
    // rellena el medio DESPUÉS de que existan ambas llaves
}

Por qué los editores autocierran llaves

Esa cosa algo molesta de que el editor inserte } cuando escribes { existe precisamente para prevenir CS1513. Déjala activada y usa el autoformato (Ctrl+K, D en VS) — la indentación desalineada es donde se esconden las llaves perdidas. Cuando todos los bloques quedan alineados, la llave huérfana se ve a simple vista.

Preguntas frecuentes

¿Qué significa CS1513 en C#?

Que un bloque abierto con { nunca se cerró. La línea del error es donde el compilador se rindió, no donde va la llave. Cuenta +1/−1 desde el inicio de la zona rota.

¿Cómo encuentro rápido la llave que falta?

Haz clic en una llave para ver su pareja resaltada; ejecuta el autoformato para que la indentación sea honesta — entonces la llave perdida salta a la vista.

Lista de comprobación