csharp-que-son-diccionarios

Qué son y cómo usar los diccionarios en C#

  • 5 min

Un Diccionario en C# es una colección genérica que permite almacenar pares clave-valor. Proporcionan una forma muy eficiente de realizar búsquedas, inserciones y eliminaciones.

La clase Dictionary<TKey, TValue> en el espacio de nombres System.Collections.Generic es la implementación estándar de esta estructura de datos en C#.

Las claves deben ser únicas y no pueden ser nulas, mientras que los valores pueden ser duplicados y nulos.

Declaración e inicialización de diccionarios

Para declarar un diccionario en C#, se utiliza la siguiente sintaxis:

Dictionary<tipoClave, tipoValor> nombreDiccionario;

Por ejemplo, si queremos crear un Diccionario que almacene nombres de personas y sus edades, podemos utilizar la siguiente sintaxis:

Dictionary<string, int> edades = new Dictionary<string, int>();

En este ejemplo, hemos creado un Diccionario llamado edades que utiliza cadenas de texto como claves y enteros como valores.

Creación de un diccionario

Una vez declarado el diccionario, antes de poder usarlo debemos inicializarlo. Para ello debemos crear una nueva diccionario, y asignarla a la variable que hemos declarado anteriormente.

O, alternativamente, podemos hacerlo en el mismo momento en que declaramos nuestra Diccionario. Asi:

Dictionary<string, int> edades = new Dictionary<string, int>();

// equivalente
var edades = new Dictionary<string, int>();
Dictionary<string, int> edades = new ();

Inicialización de diccionarios

Alternativamente, también podemos inicializar el diccionario a una serie de valores conocidos.

Dictionary<string, int> edades = new ()
{
    { "Luis", 25 },
    { "María", 30 },
    { "Pedro", 28 }
};

Uso básico del diccionario

Añadir elementos a un diccionario

Para añadir elementos a un diccionario, se utiliza el método Add o el índice de la clave:

edades.Add("Luis", 32);
edades["Ana"] = 22;

Acceder a elementos de un diccionario

Los elementos de un diccionario se pueden acceder mediante sus claves:

int edadDeLuis = edades["Luis"];

Modificar elementos de un diccionario

Para modificar el valor asociado a una clave existente, simplemente se asigna un nuevo valor a esa clave:

edades["María"] = 35;

Eliminar elementos de un diccionario

Para eliminar elementos de un diccionario

edades.Remove("Pedro");

Enumerar elementos en un diccionario

Para recorrer todos los elementos de un diccionario, se puede usar un bucle foreach:

foreach (var item in edades)
{
    Console.WriteLine($"Nombre: {item.Key}, Edad: {item.Value}");
}

Limpiar todo el diccionario

edades.Clear();

Propiedades y métodos útiles

Propiedad Count

La propiedad Count devuelve el número de pares clave-valor en el diccionario:

int cantidad = edades.Count;

Método ContainsKey

El método ContainsKey verifica si una clave específica está presente en el diccionario:

bool contieneLuis = edades.ContainsKey("Luis");

Método ContainsValue

El método ContainsValue verifica si un valor específico está presente en el diccionario:

bool contieneEdad30 = edades.ContainsValue(30);

Método TryGetValue

El método TryGetValue intenta obtener el valor asociado a una clave, devolviendo un valor booleano que indica si la operación fue exitosa:

int edad;
bool existe = edades.TryGetValue("Luis", out edad);

if (existe)
{
    Console.WriteLine($"La edad de Luis es: {edad}");
}
else
{
    Console.WriteLine("Luis no está en el diccionario");
}

Ejemplos prácticos