Dictionary en C#

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&lt;string, int&gt; 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&lt;string, int&gt; dictionary = new Dictionary&lt;string, int&gt;();

            // 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&lt;string, int&gt; 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.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *