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
- Haz clic en la línea del error y relee la ortografía exacta — en ambos sentidos.
- Busca la declaración (Ctrl+F). ¿Sin coincidencias? Es una errata o no está declarada.
- ¿La encontraste? Revisa las llaves entre la declaración y el error: cada
{debe cerrarse antes de tu uso. - Revisa mayúsculas:
name,NameyNAMEson tres nombres distintos. - ¿Sigue atascado? Renombra la variable a algo imposible de escribir mal y deja que el compilador señale el resto.