Diccionarios en C#

 

 

1 - Qué es un Diccionario en C#?

En C# Tenemos el tipo diccionario el cual es una colección que nos permite almacenar datos de forma clave-valor (key-value); El cual utiliza tipos específicos a través de generics tanto para su clave como para el valor. 

 

Un diccionario se describe con el tipo Dictionary<TKey, TValue> y por detrás utiliza KeyValuePair<Tkey, TValue> para cada uno de los elementos.

Esto quiere decir que el valor que indicamos en como Key tiene que ser único.

 

Antiguamente utilizabamos Hashtable, pero con la llegada de generics, utilizamos Dictionary, esto es debido, a que para que funcione en hashtable, guardamos el objeto como tipo Object lo que implica boxing y unboxing con cada operación, y que no tiene las ventajas de generics.

 

 

2 - Crear un diccionario y añadir elementos en C#

Para crear un diccionario en C# únicamente debemos instanciarlo, y para añadirle elementos, lo podemos hacer en la instanciación, o a través del método .Add().

//inicialización y crear a valores
Dictionary<string, string> comunidadesCapitales = new Dictionary<string, string>()
{
    {"Aragon", "Zaragoza"},
    {"Navarra", "Pamplona"}
};
//añadir valores
comunidadesCapitales.Add("Castilla la mancha", "Toledo");

Como he mencionado, la key debe ser única por lo que la "comunidad autónoma" no puede estar repetida, si intentas añadir “Aragon” otra vez, nos saltará una excepción.

 

 

3 - Acceder a los elementos de un diccionario en C#

Para acceder a los elementos de un diccionario lo hacemos a través del indexer. y tendremos que utilizar el tipo de la key que hemos utilizado en la creación de nuestro diccionario

Y cuando imprimimos nos devuelve el valor:

Console.WriteLine(comunidadesCapitales["Aragon"]); //devuelve Zaragoza

 

SI lo que queremos es acceder por posición lo podemos hacer a través del método .ElementAt(posición);

Pero en este caso nos devuelve un tipo KeyValuePair<TKey, TValue> por lo que para imprimir el valor, debemos acceder a .Value

KeyValuePair<string, string> resultado = comunidadesCapitales.ElementAt(0);
Console.WriteLine(resultado.Value); //devuelve Zaragoza

 

3.1 - La forma óptima de acceder a los elementos en un diccionario C#

La forma más óptima  para acceder a los elementos de un diccionario es utilizar .TryGetValue() esto es porque si intentamos acceder a un elemento inexistente mediante el indexer nos saltará una excepción, mientras que si lo hacemos a través de TryGetValue() no.

Pero tiene una forma un poco diferente de funcionar. Cuando llamamos a .TryGetValue() lo que hacemos es comprobar si el valor existe, por lo que el método nos devuelve un booleano true o false.

Y el valor actual del elemento lo recibimos del out parameter del método:

if (comunidadesCapitales.TryGetValue("Aragon", out string resultadoCapital))
{
    Console.WriteLine(resultadoCapital); //zaragoza
}
else
{
    Console.WriteLine("el parámetro no existe");
}

 

3.2 - Actualizar elementos en un diccionario c#

Para acceder a los elementos de un diccionario lo hacemos a través del indexer, pero para ello debemos comprobar si ese valor existe. Podemos utilizar el método .ContainsKey() el cual nos devolverá verdadero o falso y una vez sepamos que existe, podemos cambiarlo

if(comunidadesCapitales.ContainsKey("Aragon"))
{
    comunidadesCapitales["Aragon"] = "Teruel Existe";
}

 

3.3 - Eliminar elementos de un diccionario en C#

Si lo que queremos es eliminar elementos de un diccionario debemos utilizar el método .Remove(key); pero tenemos que tener cuidado, ya que si la key no existe, nos saltará una excepción.

Y opcionalmente podemos ejecutar .Clear() el cual limpiará todos los elementos.

comunidadesCapitales.Remove("Aragon");
comunidadesCapitales.Clear();

 

 

Conclusión

En este post hemos visto cómo crear diccionarios y añadir elementos

Cómo leer elementos de un diccionario

Cómo Eliminar elementos de un diccionario

 


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café