Hola a todos, hoy s voy a explicar como podemos crear y usar un Dictionary en C#.
Un diccionario en C#, es una estructura dinámica que nos permite asociar una clave con un valor.
Esta clave y valor, pueden ser de cualquier tipo, incluso clases.
Un ejemplo seria si quisiéramos contar el numero de elementos de cada color, podemos tener un diccionario donde sus claves sean string con los nombre de colores y que su valor asociado sea un número.
La forma de crearlo un diccionario es así:
Dictionary<string, int> dictionary = new Dictionary<string, int>();
En <string, int>, el primero es la clave y el segundo el valor.
Para añadir valores:
dictionary.Add("negro", 7); dictionary.Add("verde", 5); dictionary.Add("azul", 3); dictionary.Add("rojo", 2);
Añado su clave y su valor correspondiente.
Si queremos acceder a una clave en concreto, usaremos la función ContainsKey y la clave a comprobar como parámetro. Si lo contiene, devolverá true.
if (dictionary.ContainsKey("rojo")) { Console.WriteLine("El diccionario tiene la clave rojo con valor ", dictionary["rojo"]); }
Sino existe, devolverá false.
if (!dictionary.ContainsKey("blanco")) { Console.WriteLine("Añadimos la clave blanco"); dictionary.Add("blanco", 5); }
También podemos eliminar claves con el método Remove.
dictionary.Remove("rojo"); if (!dictionary.ContainsKey("rojo")) { Console.WriteLine("Ya no existe la clave rojo"); }
Ahora para poder recorrer su contenido lo podemos hacer de varias formas.
Podemos recorrer sus llaves:
foreach (string clave in dictionary.Keys) { Console.WriteLine("Clave: " + clave); }
Podemos recorrer sus valores:
foreach (int value in dictionary.Values) { Console.WriteLine("Valor: " + value); }
Podemos recorrer sus llaves y valores a la vez:
foreach (KeyValuePair<string, int> kvp in dictionary) { Console.WriteLine("Clave " + kvp.Key + ", valor " + kvp.Value); }
Aquí os dejo el ejemplo completo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ejemplos_dictionary { class Program { static void Main(string[] args) { // Creo el diccionario Dictionary<string, int> dictionary = new Dictionary<string, int>(); // Añado elementos dictionary.Add("negro", 7); dictionary.Add("verde", 5); dictionary.Add("azul", 3); dictionary.Add("rojo", 2); // Si existe la clave if (dictionary.ContainsKey("rojo")) { // Acceso a un valor concreto Console.WriteLine("El diccionario tiene la clave rojo con valor ", dictionary["rojo"]); } // sino existe la clave if (!dictionary.ContainsKey("blanco")) { Console.WriteLine("Añadimos la clave blanco"); dictionary.Add("blanco", 5); } // elimino la clave rojo dictionary.Remove("rojo"); if (!dictionary.ContainsKey("rojo")) { Console.WriteLine("Ya no existe la clave rojo"); } // Recorro los keys foreach (string clave in dictionary.Keys) { Console.WriteLine("Clave: " + clave); } // Recorro los valores foreach (int value in dictionary.Values) { Console.WriteLine("Valor: " + value); } // Recorrer el diccionario foreach (KeyValuePair<string, int> kvp in dictionary) { Console.WriteLine("Clave " + kvp.Key + ", valor " + kvp.Value); } Console.ReadLine(); } } }
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta