Depuración de diccionarios en C#
Clase 19 de 35 • Curso de C# con .Net Core 2.1
Contenido del curso
Etapa 5 – POO reutilicemos nuestro código
- 2

Herencia para reutilizar código C#
10:30 min - 3

Herencia y Polimorfismo en Programación Orientada a Objetos
11:42 min - 4

Polimorfismo en Programación Orientada a Objetos
13:17 min - 5

Casting en C#: cuándo funciona y cuándo falla
07:09 min - 6

Conversiones seguras en C# con is y as
12:44 min - 7

Sobrescribir ToString para depuración en C#
08:15 min
Etapa 6- Ajustes y funcionalidad
Etapa 7 – Preparando información para nuestros reportes
- 11

Manejo Avanzado de Métodos y Parámetros en Programación
15:43 min - 12

Manejo de Parámetros de Salida en Visual Studio Code
04:38 min - 13

Sobrecarga de Métodos para Parámetros de Salida Opcionales
05:51 min - 14

Optimización de Listas: Buenas Prácticas en C#
04:16 min - 15

Dictionary: cómo funciona en C#
11:14 min - 16

Diccionarios con polimorfismo en C#
10:48 min - 17

Uso de Constantes y Enumeraciones para Optimizar Diccionarios en C#
11:33 min - 18

Foreach anidado para diccionarios en C#
13:47 min - 19

Depuración de diccionarios en C#
Viendo ahora - 20

Parámetro opcional para controlar impresión en C#
11:47 min - 21

Cómo usar switch en lugar de if/else
14:30 min - 22

Números aleatorios y eventos en C#
12:52 min - 23

Diccionarios y Refactoring en Programación Básica
02:13 min
Etapa 8 – Consultas
- 24

Cómo crear un reporteador en C sharp
11:42 min - 25

Generación segura de reportes en sistemas de información
10:21 min - 26

Construcción de reportes con LINQ en C#
11:48 min - 27

Diccionario con evaluaciones por asignatura
08:32 min - 28

Tipos anónimos en LINQ para reportes complejos
10:52 min - 29

Cálculo del Promedio de Notas Agrupadas por Alumno y Asignatura
10:46 min - 30

Creación de Tipos de Datos Personalizados en Programación Avanzada
12:05 min - 31

Generación de Reportes con LINQ en C#
02:09 min
Etapa 9 – Creando una UI de Consola
Aprende a verificar, depurar e imprimir un diccionario en C# con confianza. Aquí verás cómo validar su estructura en Visual Studio, recorrer sus contenidos con foreach y mejorar la legibilidad de la salida con títulos y conversión de enum a texto. Todo se basa en una implementación donde el diccionario consolida escuela, cursos, asignaturas, evaluaciones y alumnos.
¿Cómo verificar la estructura del diccionario en C#?
Primero se confirma que el diccionario cumple lo esperado desde el depurador. Con un punto de interrupción en Visual Studio y ejecutando con F5, se inspeccionan las llaves y sus colecciones asociadas. El diccionario temporal queda con cinco llaves: escuela, cursos, evaluación, asignatura y alumno.
- escuela: 1 objeto.
- cursos: 5 cursos.
- asignaturas: 20 asignaturas.
- evaluaciones: 1420 evaluaciones.
- alumnos: 71 alumnos.
Se valida además el flujo de ejecución: continuar con F10, evitar salir del método por accidente y observar la variable dic en el punto justo antes de imprimir.
¿Qué técnicas de depuración aceleran el control?
- usar punto de interrupción donde se construye el diccionario.
- ejecutar con F5 o el botón play indistintamente.
- avanzar con F10 para no entrar a métodos innecesarios.
- observar el contenido de dic y de sus llaves antes de imprimir.
- si se cierra la ejecución, relanzar y ajustar los puntos de interrupción.
¿Qué datos se validaron y por qué importan?
- número de llaves: 5 llaves principales bien definidas.
- consistencia de listas: alumnos, asignaturas y evaluaciones cargadas por completo.
- conteos clave: aseguran volumen real de datos al imprimir.
¿Cómo imprimir el diccionario completo con foreach?
La primera aproximación imprime solo las llaves, porque al iterar el diccionario se obtiene un KeyValuePair y se estaba mostrando su clave. El objetivo es recorrer cada llave y luego sus valores para ver todos los objetos.
Ejemplo de la situación inicial que imprime solo llaves:
foreach (var obj in dic)
{
Console.WriteLine(obj.Key); // imprime: escuela, curso, evaluación, asignatura, alumno
}
Luego, se ajusta para recorrer los valores de cada llave. Como cada valor es una lista, se usa un foreach anidado y se confía en ToString de cada objeto para mostrar información útil.
foreach (var obj in dic)
{
foreach (var valor in obj.Value)
{
Console.WriteLine(valor); // usa ToString() del objeto
}
}
Con este cambio, aparecen todos los alumnos con su identificador único, las asignaturas como “matemáticas”, “castellano”, y un gran volumen de evaluaciones. La salida es correcta, pero extensa.
Conceptos aplicados aquí: - foreach para recorrer diccionarios y listas anidadas. - KeyValuePair para acceder a Key y Value. - Console.WriteLine y ausencia de using static en el contexto. - reliance en ToString para representar objetos. - método público public void imprimirDiccionario que recibe el diccionario y considera una IEnumerable de objetos escuela base como modelo de contenido.
¿Cómo mejorar la legibilidad de la salida y qué decidir?
Para distinguir bloques, ayuda imprimir un título por cada llave. Se usa un utilitario como printer.WriteTitle, convirtiendo la clave (que es una enumeración) a texto con ToString. Es necesario importar el espacio de nombres de utilidades antes de llamar a ese método.
// using Utilidades; // ejemplo de import del espacio de nombres
foreach (var obj in dic)
{
Printer.WriteTitle(obj.Key.ToString()); // etiqueta: escuela, curso, evaluación, asignatura, alumno
foreach (var valor in obj.Value)
{
Console.WriteLine(valor);
}
}
Esto separa claramente escuela, cursos, asignaturas, evaluaciones y alumnos, facilitando la lectura. Aun así, surge la duda sobre el volumen: imprimir todo puede ser demasiado.
¿Qué ajustes de formato ayudan a entender mejor?
- mostrar la llave como título antes de su contenido.
- usar ToString de cada tipo para una representación clara.
- considerar un “label” por elemento: por ejemplo, “evaluación: …”, “alumno: …”.
- ordenar o agrupar por tipo según necesidad.
- evaluar si se requiere paginar o limitar la cantidad de elementos.
¿Qué decisiones quedan abiertas para continuar?
- decidir si se imprimen todos los elementos o solo un subconjunto.
- definir etiquetas por tipo para identificar rápidamente “evaluación” y “alumno”.
- ajustar el método de impresión para diferentes formatos por tipo sin perder simpleza.
Si te interesa ver alternativas de formato, filtros o etiquetas por tipo, comenta qué priorizar: cursos, evaluaciones o alumnos.