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