Aprende a depurar en C# con autoridad: corrige referencias nulas, genera datos de prueba consistentes con LINQ y asigna alumnos por curso de forma aleatoria con Random. Aquí verás cómo evitar errores comunes, nombrar mejor tus métodos y convertir resultados a listas para trabajar sin fricción.
¿Cómo detectar y corregir referencias nulas en C# durante el debug?
En Visual Studio Code, un punto de interrupción reveló una excepción por referencia nula al asignar asignaturas al curso. La causa: la lista de asignaturas del curso no estaba inicializada. La solución: inicializar la colección o asignar la lista creada antes de usarla.
Usa el debug para inspeccionar variables en tiempo de ejecución.
Identifica objetos nulos antes de agregarles elementos.
Inicializa listas en las entidades para garantizar estados válidos.
Ejemplo de inicialización segura en la entidad Curso:
Tip de diseño: renombrar métodos para reflejar su intención ayuda a mantener el código claro. Si un método no “carga” sino que “crea” alumnos, cámbiale el nombre.
¿Cómo generar alumnos con LINQ, unique ID y listas en C#?
Se creó un producto cartesiano con LINQ para combinar fragmentos de nombres y apellidos. Resultado destacado: 391 alumnos generados al instante, cada uno con identificador único usando Guid.
Usa OrderBy con una clave estable para variar resultados cuando apliques Take.
Devuelve List en lugar de IEnumerable si tu dominio trabaja con listas.
Emplea Guid para UniqueId al instanciar cada alumno.
Ejemplo de ordenamiento, truncado y conversión a lista:
List<Alumno>GenerarAlumnosAlAzar(int cantidad){var alumnos = listaAlumnos
.OrderBy(a => a.UniqueId)// orden aleatorio efectivo si UniqueId se crea al instanciar.Take(cantidad).ToList();// trabajar con Listreturn alumnos;}
Definición de identificador único con Guid:
publicclassAlumno{publicstring UniqueId {get;}= Guid.NewGuid().ToString();publicstring Nombre {get;set;}}
Insight práctico: si solo haces Take(cantidad) sobre la misma fuente, los mismos N alumnos se repetirán en todos los cursos. El ordenamiento por UniqueId cambia el orden y evita duplicidades entre cursos.
¿Cómo asignar alumnos aleatorios por curso con Random en .NET?
Para evitar cursos con 300+ alumnos y simular escenarios reales, se limitó y varió la cantidad por curso con Random. Observación reveladora: ubicar la cantidad fuera del bucle generó el mismo número (p. ej., 12) en varios cursos; mover el cálculo dentro del foreach solucionó el patrón repetido y produjo valores como 10, 11, 12, 13 en distintas iteraciones.
Genera tamaños de curso con Random.Next en un rango razonable (por ejemplo, 5 a 20).
Calcula la cantidad dentro del foreach para obtener valores distintos por curso.
Asigna a cada curso una lista nueva de alumnos generada al azar.
Implementación típica:
var rnd =newRandom();foreach(var c in escuela.Cursos){int cantidad = rnd.Next(5,20);// entre 5 y 20 c.Alumnos =GenerarAlumnosAlAzar(cantidad);// alumnos únicos por ordenamiento}
¿Qué habilidades refuerzas con este flujo?
Depuración con puntos de interrupción y panel de variables.
Manejo de referencias nulas e inicialización de colecciones.
Uso de LINQ: OrderBy, Take y colecciones proyectadas.
Conversión de IEnumerable a List con ToList para operar en dominio.
Generación de datos de prueba: producto cartesiano y Random.
Identificadores únicos con Guid.
Buenas prácticas de nombres y refactoring para mover responsabilidades a nuevas clases (como una clase estática Printer para títulos y pitidos).
Revisión de tipos numéricos: double, decimal, float.
¿Qué keywords y datos relevantes conviene recordar?
Visual Studio Code, debug, punto de interrupción, referencia nula.
Rango de alumnos por curso con Random: entre 5 y 20.
Próximo paso: carga de evaluaciones.
¿Tú cómo limitarías los alumnos por curso y qué criterio de orden usarías para variar resultados? Comparte tu enfoque y decisiones de diseño en los comentarios.