Diccionario C# con ejemplos

En C#, Dictionary es una colección genérica que generalmente se usa para almacenar pares clave/valor. El funcionamiento de Dictionary es bastante similar a la tabla hash no genérica . La ventaja de Dictionary es que es de tipo genérico. El diccionario se define en el espacio de System.Collection.Genericnombres. Es de naturaleza dinámica, lo que significa que el tamaño del diccionario crece según la necesidad.

Puntos importantes:

  • La clase Dictionary implementa el
    • Interfaz IDictionary<TKey,TValue >
    • IReadOnlyCollection<KeyValuePair<TKey,TValue>> Interfaz
    • Interfaz IReadOnlyDictionary<TKey,TValue >
    • Interfaz de IDiccionario
  • En Dictionary, la clave no puede ser nula, pero el valor puede serlo.
  • En Diccionario, la clave debe ser única. No se permiten claves duplicadas si intenta usar una clave duplicada, entonces el compilador generará una excepción.
  • En Diccionario, solo puede almacenar los mismos tipos de elementos.
  • La capacidad de un diccionario es el número de elementos que puede contener el diccionario.

¿Cómo crear el Diccionario?

La clase de diccionario tiene 7 constructores que se usan para crear el Diccionario, aquí solo usamos el constructor Dictionary<TKey, TValue>() y si desea obtener más información sobre los constructores, consulte C# | Clase de diccionario .

Dictionary<TKey, TValue>(): este constructor se usa para crear una instancia de la clase Dictionary<TKey, TValue> que está vacía, tiene la capacidad inicial predeterminada y usa el comparador de igualdad predeterminado para el tipo de clave de la siguiente manera:

Paso 1: Incluya el espacio de nombres System.Collection.Generic en su programa con la ayuda de la palabra clave using.

Sintaxis:

using System.Collection.Generic; 

Paso 2: cree un diccionario usando la clase Dictionary<TKey, TValue> como se muestra a continuación:

Dictionary dictionary_name = new Dictionary();

Paso 3: si desea agregar elementos en su diccionario, use el método Agregar() para agregar pares clave/valor en su diccionario. Y también puede agregar un par clave/valor en el diccionario sin usar el método Agregar. Como se muestra en el siguiente ejemplo.

Paso 4: Se accede al par clave/valor del Diccionario de tres maneras diferentes:

  • for loop: Puede usar for loop para acceder a los pares clave/valor del Diccionario.

    Ejemplo:

    for(int x=0; i< My_dict1.Count; x++)
    {
        Console.WriteLine("{0} and {1}", My_dict1.Keys.ElementAt(x), 
                             My_dict1[ My_dict1.Keys.ElementAt(x)]);
    }
  • Uso del índice: puede acceder a un par clave/valor individual del diccionario utilizando su valor de índice. Aquí, solo especifica la clave en el índice para obtener el valor del diccionario dado, no es necesario especificar el índice. Indexer siempre toma la clave como parámetro, si la clave dada no está disponible en el diccionario, entonces da KeyNotFoundException .

    Ejemplo:

    Console.WriteLine("Value is:{0}", My_dicti[1123]);
    Console.WriteLine("Value is:{0}", My_dicti[1125]);
  • bucle foreach: puede usar el bucle foreach para acceder a los pares clave/valor del diccionario. Como se muestra en el siguiente ejemplo, accedemos al diccionario usando un bucle foreach.

Ejemplo:

// C# program to illustrate how 
// to create a dictionary
using System;
using System.Collections.Generic;  
  
class GFG {
  
        // Main Method 
    static public void Main () {
          
        // Creating a dictionary
        // using Dictionary<TKey,TValue> class
        Dictionary<int, string> My_dict1 =  
                       new Dictionary<int, string>(); 
            
          // Adding key/value pairs 
          // in the Dictionary
          // Using Add() method
          My_dict1.Add(1123, "Welcome");
          My_dict1.Add(1124, "to");
          My_dict1.Add(1125, "GeeksforGeeks");
            
          foreach(KeyValuePair<int, string> ele1 in My_dict1)
          {
              Console.WriteLine("{0} and {1}",
                        ele1.Key, ele1.Value);
          }
          Console.WriteLine();
            
          // Creating another dictionary
          // using Dictionary<TKey,TValue> class
      // adding key/value pairs without
          // using Add method
      Dictionary<string, string> My_dict2 =  
              new Dictionary<string, string>(){
                                  {"a.1", "Dog"},
                                  {"a.2", "Cat"},
                                {"a.3", "Pig"} }; 
           
          foreach(KeyValuePair<string, string> ele2 in My_dict2)
          {
              Console.WriteLine("{0} and {1}", ele2.Key, ele2.Value);
          }
    }
}
Producción:

1123 and Welcome
1124 and to
1125 and GeeksforGeeks

a.1 and Dog
a.2 and Cat
a.3 and Pig

¿Cómo eliminar elementos del Diccionario?

En Diccionario, puede eliminar elementos del Diccionario. La clase Dictionary<TKey, TValue> proporciona dos métodos diferentes para eliminar elementos y los métodos son:

  • Borrar : este método elimina todas las claves y valores del Diccionario<TKey,TValue>.
  • Eliminar : este método elimina el valor con la clave especificada del Diccionario<TKey,TValue>.

Ejemplo:

// C# program to illustrate how 
// remove key/value pairs from 
// the dictionary
using System;
using System.Collections.Generic;  
  
class GFG {
  
        // Main Method
    static public void Main() {
          
        // Creating a dictionary
        // using Dictionary<TKey,TValue> class
        Dictionary<int, string> My_dict =  
                     new Dictionary<int, string>(); 
            
          // Adding key/value pairs in the 
          // Dictionary Using Add() method
          My_dict.Add(1123, "Welcome");
          My_dict.Add(1124, "to");
          My_dict.Add(1125, "GeeksforGeeks");
            
          // Before Remove() method
          foreach(KeyValuePair<int, string> ele in My_dict)
          {
              Console.WriteLine("{0} and {1}", 
                          ele.Key, ele.Value);
          }
          Console.WriteLine();
            
          // Using Remove() method 
          My_dict.Remove(1123);
            
          // After Remove() method
          foreach(KeyValuePair<int, string> ele in My_dict)
          {
              Console.WriteLine("{0} and {1}",
                          ele.Key, ele.Value);
          }
          Console.WriteLine();
            
            
          // Using Clear() method
          My_dict.Clear();
            
          Console.WriteLine("Total number of key/value "+
           "pairs present in My_dict:{0}", My_dict.Count);
          
    }
}
Producción:

1123 and Welcome
1124 and to
1125 and GeeksforGeeks

1124 and to
1125 and GeeksforGeeks

Total number of key/value pairs present in My_dict:0

¿Cómo comprobar la disponibilidad de elementos en el Diccionario?

En Diccionario, puede verificar si la clave o el valor dado está presente en el diccionario especificado o no. La clase Dictionary<TKey, TValue> proporciona dos métodos diferentes para verificar y los métodos son:

  • Contiene clave : este método se usa para verificar si Dictionary<TKey,TValue> contiene la clave especificada.
  • Contiene valor : este método se utiliza para verificar si Dictionary<TKey,TValue> contiene un valor específico.

Ejemplo:

// C# program to illustrate how
// to  check the given key or 
// value present in the dictionary
// or not
using System;
using System.Collections.Generic;  
  
class GFG {
  
        // Main Method
    static public void Main () {
          
                 // Creating a dictionary
        // using Dictionary<TKey,TValue> class
        Dictionary<int, string> My_dict =  
                      new Dictionary<int, string>(); 
            
          // Adding key/value pairs in the 
          // Dictionary Using Add() method
          My_dict.Add(1123, "Welcome");
          My_dict.Add(1124, "to");
          My_dict.Add(1125, "GeeksforGeeks");
            
          // Using ContainsKey() method to check
          // the specified key is present or not
          if (My_dict.ContainsKey(1122)==true)
          {
              Console.WriteLine("Key is found...!!");
          }
  
          else
          {
               Console.WriteLine("Key is not found...!!");
          }
            
          // Using ContainsValue() method to check
          // the specified value is present or not
          if (My_dict.ContainsValue("GeeksforGeeks")==true)
          {
              Console.WriteLine("Value is found...!!");
          }
  
          else
          {
               Console.WriteLine("Value is not found...!!");
          }
    }
}
Producción:

Key is not found...!!
Value is found...!!

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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