Error del compilador · error CS0246

No se encuentra el tipo o el nombre de espacio 'X'

A diferencia de CS0103 (una variable desconocida), CS0246 trata de tipos — nombres de clase, struct, interfaz o espacio de nombres. El compilador te dice: "no conozco ningún tipo con ese nombre".

Causa 1: errata en el nombre de tu propia clase

Declaraste Studnet… o usas Studnet. En cualquier caso, declaración y uso deben coincidir:

Student s = new Student();   // no existe ninguna clase 'Student'… todavía
class Student
{
    public string Name;
    public int Id;
}

Student s = new Student { Name = "Ada", Id = 1 };
Console.WriteLine($"Student: {s.Name} (#{s.Id})");

Causa 2: un tipo .NET mal escrito (el clásico: Sting)

Las palabras clave como string e int siempre existen. Pero los nombres de clase .NET — y de cualquier otra clase de la BCL — deben escribirse bien. Sting sin la r es el disparador más famoso:

Sting nombre = "Ada";   // querías 'String'… o mejor: 'string'
string nombre = "Ada";        // alias de palabra clave — siempre disponible
String igual = "Ada";         // nombre de clase .NET — también vale, mismo tipo
Console.WriteLine(nombre == igual ? nombre : "distinto");

Causa 3: falta una directiva using

En Visual Studio este error suele significar que usas una clase de un espacio de nombres que no has importado. El motor del navegador preimporta lo esencial, así que aquí se demuestra el mismo tipo de fallo — un prefijo de espacio de nombres mal escrito:

// "Systm" — un prefijo mal escrito nunca se resuelve:
Systm.Console.WriteLine("hola");

En un proyecto real la solución es una línea al principio del archivo, o Ctrl+. sobre el nombre en rojo:

using System.Text;              // ahora StringBuilder se resuelve
using System.Collections.Generic; // ahora List<T> / Dictionary<K,V> se resuelven

Causa 4: el paquete no está referenciado

Algunos tipos viven en paquetes NuGet, no en la biblioteca base. Si using Newtonsoft.Json; sigue dando CS0246, el paquete no está instalado en este proyecto — un using solo puede importar espacios de nombres ya referenciados. Solución: añade el paquete NuGet y el using empieza a funcionar.

Tabla de decisión

¿De dónde viene el nombre?Qué revisar
Tu propia claseOrtografía y mayúsculas entre class X y cada uso; mismo archivo o espacio de nombres
Biblioteca base de .NETOrtografía (String vs Sting); prueba la palabra clave en minúsculas (string)
Otro espacio de nombresDirectiva using arriba; Ctrl+. propone añadirla
Paquete NuGetPaquete instalado + referencia del proyecto; recompila tras instalar

Preguntas frecuentes

¿Qué provoca el error CS0246 en C#?

El compilador encontró un tipo o espacio de nombres que no conoce. Revisa: ortografía de tu clase, ortografía de tipos .NET (String, no Sting), un using que falta, o un paquete NuGet sin referenciar.

¿Diferencia entre CS0246 y CS0103?

CS0246 es sobre TIPOS desconocidos; CS0103 sobre VARIABLES o métodos desconocidos. Si el error señala la parte antes de un punto, suele ser CS0246.

Ritual de depuración en un minuto