Error del compilador · error CS1519
Token 'X' no válido en la declaración de miembro de clase, struct o interfaz
Dentro del cuerpo de una clase el compilador acepta declaraciones — campos, métodos, propiedades, constructores. Encontró otra cosa, así que no sabe qué miembro estabas declarando.
Míralo ocurrir
class Counter
{
5 // un valor no es una declaración de miembro
}
Causa 1: una instrucción directa en el cuerpo de la clase
La más común entre principiantes — el código ejecutable debe ir dentro de un método:
class Mal
{
int x = 0;
x = 5; // ✗ CS1519 — las instrucciones van en un método
}
class Bien
{
int x = 0;
public void PonerCinco()
{
x = 5; // ✓ la instrucción vive en un método
}
public int Leer() { return x; }
}
var g = new Bien();
g.PonerCinco();
Console.WriteLine(g.Leer());
Causa 2: un campo sin tipo
class Config
{
maxIntentos = 3; // falta el tipo — el compilador lee esto como nombre de miembro
}
class Config
{
public int maxIntentos = 3; // tipo + nombre + inicializador
}
Console.WriteLine(new Config().maxIntentos);
Causa 3: un método escrito fuera de la clase
Si la llave de cierre de la clase llegó demasiado pronto, el método cae en el ámbito de archivo. Los métodos de nivel superior son legales en C# moderno, así que esto puede ser sutil — pero si el método usa campos de la clase, falla:
class Counter
{
private int count = 0;
} // ← la clase se cerró aquí
public void Increment() // ahora fuera de la clase
{
count++; // count ya no está en ámbito
}
Causa 4: un carácter suelto
Una coma huérfana, un punto y coma mal colocado o un # de un copiar y pegar pueden disparar el mismo mensaje. Lee el token que el compilador nombra — te dice exactamente con qué carácter se atragantó.
Preguntas frecuentes
¿Qué significa CS1519?
Apareció un token no válido donde se esperaba una declaración de miembro. Mueve las instrucciones a un método y da tipo a cada campo.
¿Por qué no puedo ejecutar código directamente en una clase?
El cuerpo de la clase solo acepta declaraciones. Las instrucciones ejecutables pertenecen a un método o constructor.
Lista de comprobación
- Lee el token del mensaje — ese carácter exacto es el problema.
- ¿Es una instrucción? Muévela a un método.
- ¿Es un nombre de campo sin tipo? Añade el tipo.
- ¿Se cerró una llave antes de tiempo, empujando un método fuera de la clase?
- ¿Copiaste de algún sitio? Busca puntuación suelta en el borde del pegado.