Dictionary: cómo funciona en C#
Clase 15 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#
Viendo ahora - 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#
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 gestión de colecciones en C# con Dictionary, una estructura clave en .NET para mapear llaves a valores y acceder a datos de forma directa. Aquí verás cómo declararlo, agregar y recorrer elementos con foreach, leer por índice, y la diferencia entre actualizar y usar Add cuando trabajas en Visual Studio Code y ejecutas con .NET run.
¿Qué es un Dictionary en C# y cómo se declara?
Un diccionario es una colección genérica con dos tipos: llave y valor. En el ejemplo se usa un entero como llave y un string como valor. Las llaves son únicas y cada elemento es un par llave-valor.
- Estructura genérica: dos tipos, uno para llave y otro para valor.
- Llave única: no se repite en la colección.
- Cada elemento es un KeyValuePair con propiedades Key y Value.
Ejemplo de declaración e inserción inicial:
using System;
using System.Collections.Generic;
var diccionario = new Dictionary<int, string>();
// Adicionar elementos
diccionario.Add(10, "Juanca");
diccionario.Add(23, "lorem ipsum");
¿Cómo agregar, recorrer y acceder por índice un diccionario?
Puedes recorrer con foreach y un KeyValuePair, imprimiendo Key y Value con Console.WriteLine. También puedes leer un valor directamente con el indexador usando la llave.
- Recorrido con foreach: simple y claro para colecciones.
- Lectura por indexador:
diccionario[llave]devuelve el valor. - Excepción por llave inexistente: acceder a una llave que no existe lanza error.
Recorrer e imprimir:
foreach (KeyValuePair<int, string> kv in diccionario)
{
Console.WriteLine($"Key {kv.Key}, valor {kv.Value}");
}
Acceder por índice a una llave existente:
Console.WriteLine(diccionario[23]); // imprime "lorem ipsum"
Acceder a una llave inexistente genera excepción. Luego, asignar con indexador crea o reemplaza el valor:
// diccionario[0] // lanzaría excepción si no existe.
diccionario[0] = "Peckerman"; // crea la llave 0 con ese valor.
¿Cómo usar llaves string para casos más cercanos al negocio?
También puedes usar Dictionary<string, string> para descripciones o glosarios.
var dic = new Dictionary<string, string>();
dic["luna"] = "cuerpo celeste que gira alrededor de la tierra";
Console.WriteLine(dic["luna"]);
// Reemplazo del contenido asociado a la misma llave
dic["luna"] = "protagonista de Soy Luna";
Console.WriteLine(dic["luna"]); // imprime la nueva definición
- Llaves tipo string: útiles para términos del dominio.
- Reemplazo por indexador: cambia el valor sin crear una nueva llave.
¿Qué diferencia hay entre actualizar y adicionar con Add en Dictionary?
Actualizar con el indexador reemplaza el valor de una llave existente o crea la llave si no existía. En cambio, adicionar con Add exige que la llave no exista; si ya existe, lanza excepción.
- Indexador: crea o reemplaza el valor de una llave.
- Add: solo crea; falla si la llave está repetida.
- Llaves únicas: regla central del diccionario.
Ejemplo del error por duplicado:
var dic = new Dictionary<string, string>();
dic["luna"] = "cuerpo celeste que gira alrededor de la tierra";
// Esto provoca excepción porque "luna" ya existe
// System.ArgumentException: An item with the same key has already been added.
dic.Add("luna", "protagonista de Soy Luna");
- Manejo esperado: si necesitas cambiar el valor, usa el indexador
dic["luna"] = "...". - Validación previa: antes de Add, verifica existencia con
ContainsKeysi planeas controlar el flujo.
¿Te gustaría ver más patrones prácticos con Dictionary en C#? Comparte tu caso de uso en los comentarios y continuamos la conversación.