Uso de Constantes y Enumeraciones para Optimizar Diccionarios en C#
Clase 17 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#
Viendo ahora - 18

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

Depuración de diccionarios en C#
09:37 min - 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
Optimiza la integridad de tus diccionarios en C# evitando errores por mayúsculas, ortografía y duplicación de llaves. Aquí verás cómo pasar de llaves tipo string a constantes y luego a enum, una práctica que reduce fallos y hace el código más claro y mantenible.
¿Por qué las llaves string rompen la integridad?
Cuando varias personas agregan elementos a un diccionario con llaves string, es fácil crear duplicados por variaciones de escritura: "cursos", "Cursos", o incluso otra ortografía. El resultado: dos llaves distintas para lo que debía ser lo mismo. Esto provoca datos fragmentados y mantenimiento difícil.
- Diferentes estilos generan índices distintos en el diccionario.
- Un string permite errores accidentales al escribir.
- La integridad del sistema se afecta sin que el compilador avise.
¿Qué problemas típicos aparecen con string en llaves?
- Duplicados por mayúsculas y minúsculas.
- Llaves casi iguales que crean nuevas entradas.
- Uso inconsistente entre equipos y archivos.
¿Cómo ayuda una constante pública en C#?
Una constante es un valor fijo en el programa. Definir una constante por cada llave evita escribir strings a mano una y otra vez. Además, al centralizarlas, todos usan la misma referencia.
- Palabra clave: const.
- Tipos nativos: string, int, etc.
- Acceso: deben ser públicas si se usan desde varios archivos.
¿Cómo declarar constantes y agruparlas en una estructura?
Agrupar constantes en un objeto facilita su uso y evita que queden sueltas. Para tipos sencillos, una struct funciona muy bien.
public struct LlavesDiccionario
{
public const string CURSO = "cursos";
public const string ALUMNOS = "alumnos";
public const string ASIGNATURAS = "asignaturas";
public const string ESCUELA = "escuela";
public const string EVALUACIONES = "evaluaciones";
}
- Beneficio: se usan como LlavesDiccionario.CURSO.
- Convención: mayúscula inicial o todo en mayúsculas, según preferencia del equipo.
- Herramienta: edición desde Visual Studio Code.
¿Cuál es la debilidad de las constantes con string?
Aunque mejoran, el diccionario sigue siendo de tipo string. Aún es posible escribir "cursos" directo y romper la integridad.
- El compilador no impide usar un literal string.
- El error puede colarse en cualquier punto del código.
¿Por qué migrar a enum para las llaves del diccionario?
Con una enumeración, el método y el diccionario ya no dependen de strings. Solo aceptan valores predefinidos, lo que evita errores accidentales. Además, el código se vuelve más autoexplicativo.
¿Cómo definir y usar un enum como llave?
Primero, define la enumeración. Se recomienda usar nombres en singular para claridad semántica.
public enum LlaveDiccionario
{
Escuela,
Curso,
Alumno,
Asignatura,
Evaluacion
}
Luego, cambia las firmas y usos para que dependan del enum.
// Antes: dependencia de string
IEnumerable<object> Obtener(string llave) { /* ... */ }
// Después: dependencia de enum
IEnumerable<object> Obtener(LlaveDiccionario llave) { /* ... */ }
// Uso seguro
envar cursos = Obtener(LlaveDiccionario.Curso);
- El compilador obliga a elegir entre valores válidos del enum.
- Se elimina la posibilidad de escribir "cursos" como string suelto.
- El diccionario trabaja con LlaveDiccionario en vez de string.
¿Qué debes saber sobre el enum y su base entera?
Un enum se basa en enteros. Alguien podría forzar un valor numérico por casting, pero ya no sería un error casual, sino un acto intencional.
- Cada miembro equivale a un número interno.
- La trampa requiere casting explícito.
- En la práctica, el uso normal queda fuertemente tipado.
¿Qué ganancia obtienes en mantenimiento y calidad?
- Menos fricción y menos errores humanos.
- Código legible y coherente en todo el proyecto.
- Llaves centralizadas y tipadas que el compilador valida.
¿Tienes dudas o una forma distinta de tipar las llaves de tus diccionarios en C#? Cuéntalo en los comentarios y enriquezcamos el enfoque entre todos.