Error del compilador · error CS1525
Término de expresión 'X' no válido
El compilador estaba leyendo una expresión — un lugar donde debe aparecer un valor — y se topó con puntuación. El hueco que debía contener un valor está vacío.
Míralo ocurrir
int x = ; // el lado derecho de = debe ser un valor
Forma 1: un inicializador vacío
string nombre = ;
string nombre = "(sin nombre)";
Console.WriteLine(nombre);
Forma 2: un operador colgando
Un operador sin nada sobre lo que operar es el mismo problema — necesita un operando:
int total = 10 + ; // + necesita un valor a la derecha
int total = 10 + 5;
Console.WriteLine(total);
Forma 3: paréntesis vacíos
bool listo = true;
if ()
{
Console.WriteLine("vamos");
}
bool listo = true;
if (listo) // if necesita una expresión bool dentro de los paréntesis
{
Console.WriteLine("vamos");
}
Forma 4: dos operadores seguidos
int a = 5;
int b = a * * 3; // entre dos operadores debe haber un valor
int a = 5;
int b = a * 3; // un operador, un valor a cada lado
Console.WriteLine(b);
Forma 5: cascada de un paréntesis sin cerrar
Si en la línea señalada no hay nada raro, mira la de arriba — un ( o [ sin cerrar hace que el compilador siga leyendo tu siguiente línea y falle donde menos lo esperas. La solución real suele estar un carácter antes.
Preguntas frecuentes
¿Qué significa CS1525?
El compilador esperaba un valor y encontró puntuación o nada. Proporciona la expresión que falta, quita el operador sobrante o completa el argumento.
¿Puede ser una cascada?
Sí — un paréntesis o corchete sin cerrar en la línea anterior lo provoca más abajo. Revisa el token anterior a la posición señalada.
Lista de comprobación
- Lee qué dice el error que encontró — normalmente
;,)o un operador sobrante. - Cada
=necesita un valor a la derecha; cada operador binario necesita ambos lados. - Cada
if/while/fornecesita una condición real dentro de los paréntesis. - Dos operadores seguidos necesitan un valor entre ellos.
- ¿Nada obvio? Busca un paréntesis sin cerrar una línea arriba.