Error del compilador · error CS0103

El nombre 'X' no existe en el contexto actual

Usaste un nombre — variable, método o clase — que el compilador no puede ver desde donde lo usaste. Tres causas cubren casi todos los casos: errata, ámbito equivocado o algo que nunca se declaró.

Causa 1: una errata (la más común)

La variable es score y escribiste scroe. C# distingue mayúsculas, así que Score ≠ score:

int score = 100;
Console.WriteLine(scroe);   // errata: declaraste 'score', usaste 'scroe'
int score = 100;
Console.WriteLine(score);   // coincidencia exacta — mayúsculas incluidas

Causa 2: usarla antes de que exista

Una variable existe desde su declaración hacia abajo. Usarla una línea antes falla:

Console.WriteLine(total);   // 'total' se declara en la línea de ABAJO
int total = 42;
int total = 42;             // declara primero…
Console.WriteLine(total);   // …usa después

Causa 3: fuera de su ámbito — la trampa de las llaves

Una variable declarada dentro de un bloque { … } muere en la llave de cierre. Es la que sorprende a quien viene de Python o del JavaScript antiguo:

for (int i = 0; i < 3; i++)
{
    int doubled = i * 2;
}
Console.WriteLine(doubled);   // 'doubled' vivía solo dentro del cuerpo del bucle

Solución: declárala en el nivel donde la necesitas:

int last = 0;
for (int i = 0; i < 3; i++)
{
    last = i * 2;             // asigna dentro…
}
Console.WriteLine(last);      // …lee fuera (el último fue 2*2)

Causa 4: un miembro de clase que nunca declaraste

Llamar a un método que no existe — u olvidar los paréntesis de uno que sí — produce el mismo código:

PrintReport();   // ese método no existe en ninguna parte
void PrintReport()
{
    Console.WriteLine("Informe: todo bien");
}

PrintReport();   // ahora el nombre existe

Preguntas frecuentes

¿Cómo corrijo el error CS0103 en C#?

CS0103 tiene tres causas habituales: errata o mayúsculas (score vs scroe), uso antes de la declaración, o lectura fuera del bloque donde se declaró. Busca la declaración y revisa ortografía, orden y llaves.

¿Por qué CS0103 con una variable declarada dentro de un bucle?

Una variable declarada dentro de un bloque muere en la llave de cierre. Declárala fuera del bucle y asígnala dentro si necesitas su valor después.

Lista de comprobación