Error del compilador · error CS0131

El lado izquierdo de una asignación debe ser una variable, propiedad o indizador

La asignación (=) guarda un valor dentro de algo. Si el lado izquierdo no tiene almacenamiento — una constante, un literal, una expresión calculada — no hay dónde ponerlo, y el compilador lo dice.

Causa 1: asignar a una constante

const int Max = 100;
Max = 200;         // CS0131: 'const' significa que NUNCA cambia — ese es el trato

const es una promesa en compilación: el valor queda grabado, para siempre. Si el valor necesita cambiar de verdad, no es una constante:

int max = 100;      // una variable…
Console.WriteLine(max);
max = 200;          // …se puede reasignar libremente
Console.WriteLine(max);

El término medio en código real es static readonly — se asigna una vez al arrancar, inmutable después, pero no es constante de compilación.

Causa 2: asignar a una expresión

int x = 5;
x + 1 = 10;        // 'x + 1' calcula un valor — no hay caja donde guardar 10

Casi siempre es una comparación invertida o un destino mal escrito. ¿Qué querías?

int x = 5;
bool esDiez = (x + 1) == 10;    // ¿comparando? eso es '==', y ambos lados pueden ser expresiones
Console.WriteLine(esDiez);
int x = 5;
x = x + 1;          // guardar de vuelta EN la variable: a la izquierda solo 'x'
Console.WriteLine(x);

Qué SÍ puede ir a la izquierda

Lado izquierdoGuarda enEjemplo
variablela variablex = 5;
propiedadel almacén de la propiedadobj.Nombre = "Ada";
indizadoresa posiciónarr[0] = 5; / dict["k"] = v;
campoel campo del objetoperro.Edad = 3;

Todo lo demás — literales (5 = x;), constantes, llamadas a métodos, aritmética — produce un valor en vez de contenerlo, y nunca puede estar a la izquierda.

Preguntas frecuentes

¿Qué significa CS0131 en C#?

El lado izquierdo de = no puede almacenar un valor — es constante, literal o expresión. Solo pueden ir variables, propiedades, campos o indizadores; si querías comparar, usa ==.

¿Se puede asignar a un const?

Nunca — const es una promesa de compilación. Si el valor debe cambiar, usa una variable normal (o static readonly asignado una vez).

Lista de comprobación