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)
- Pon el cursor al inicio de la función o bloque roto.
- Cuenta hacia abajo:
+1por cada{,−1por cada}. - 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
- 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; el déficit localiza el hueco.
- Escribe ambas llaves a la vez; rellena el medio después.
- Formatea antes de depurar — la indentación delata las mentiras del anidamiento.
- Error hermano: CS1002 (falta
;) sigue la misma regla de "mira una línea atrás".