C# | Dictionary Class

The Dictionary<TKey, TValue> Class in C# is a collection of Keys and Values. It is a generic collection class in the System.Collection.Generics namespace. The Dictionary <TKey, TValue> generic class provides a mapping from a set of keys to a set of values. Each addition to the dictionary consists of a value and its associated key. Retrieving a value by using its key is very fast, close to O(1) because the Dictionary class is implemented as a hash table. Every key in a Dictionary <TKey, TValue> must be unique according to the dictionary’s equality comparer.

Note: A key cannot be null, but a value can be if the value type TValue is a reference type.

Parameters:

  • TKey : Denotes the type of the keys in the dictionary.
  • TValue : Denotes the type of the values in the dictionary.

Since the Dictionary<TKey, TValue> is a collection of keys and values, the element type is not the type of the key or the type of the value. Instead, the element type is a KeyValuePair <TKey, TValue> of the key type and the value type.

Constructors

Constructor Description
Dictionary<TKey, TValue>() Initializes a new instance of the Dictionary<TKey, TValue> class that is empty, has the default initial capacity, and uses the default equality comparer for the key type.
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the default equality comparer for the key type.
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the specified IEqualityComparer<T>.
Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IEqualityComparer<T>.
Dictionary<TKey,TValue>(Int32) Initializes a new instance of the Dictionary class that is empty, has the specified initial capacity and uses the default equality comparer for the key type.
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IEqualityComparer<T>.
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to create a Dictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Create a new dictionary of
        // strings, with string keys.
        Dictionary<string, string> myDict = 
          new Dictionary<string, string>();
  
        // Adding key/value pairs in myDict
        myDict.Add("1", "C");
        myDict.Add("2", "C++");
        myDict.Add("3", "Java");
        myDict.Add("4", "Python");
        myDict.Add("5", "C#");
        myDict.Add("6", "HTML");
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs"+
              " in myDict are : " + myDict.Count);
  
        // Displaying the key/value pairs in myDict
        Console.WriteLine("\nThe key/value pairs"+
                           " in myDict are : ");
  
        foreach(KeyValuePair<string, string> kvp in myDict)
        {
            Console.WriteLine("Key = {0}, Value = {1}",
                              kvp.Key, kvp.Value);
        }
    }
}

chevron_right


Output:

Total key/value pairs in myDict are : 6

The key/value pairs in myDict are : 
Key = 1, Value = C
Key = 2, Value = C++
Key = 3, Value = Java
Key = 4, Value = Python
Key = 5, Value = C#
Key = 6, Value = HTML


Properties

Properties Description
Comparer Gets the IEqualityComparer<TKey,TValue> that is used to determine equality of keys for the dictionary.
Count Gets the number of key/value pairs contained in the Dictionary<TKey,TValue>.
Item[TKey] Gets or sets the value associated with the specified key.
Keys Gets a collection containing the keys in the Dictionary<TKey,TValue>.
Values Gets a collection containing the values in the Dictionary<TKey,TValue>.

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to get the keys 
// in the Dictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Create a new dictionary of
        // strings, with string keys.
        Dictionary<string, string> myDict = 
          new Dictionary<string, string>();
  
        // Adding key/value pairs in myDict
        myDict.Add("1", "C");
        myDict.Add("2", "C++");
        myDict.Add("3", "Java");
        myDict.Add("4", "Python");
        myDict.Add("5", "C#");
        myDict.Add("6", "HTML");
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs"+
              " in myDict are : " + myDict.Count);
  
        // To get the keys alone, use the Keys property.
        Dictionary<string, string>.KeyCollection keyColl = 
                                              myDict.Keys;
  
        // The elements of the KeyCollection
        // are strongly typed with the type 
        // that was specified for dictionary keys.
        foreach(string s in keyColl)
        {
            Console.WriteLine("Key = {0}", s);
        }
    }
}

chevron_right


Output:

Total key/value pairs in myDict are : 6
Key = 1
Key = 2
Key = 3
Key = 4
Key = 5
Key = 6

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to get the values
// in the Dictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Create a new dictionary of
        // strings, with string keys.
        Dictionary<string, string> myDict = 
           new Dictionary<string, string>();
  
        // Adding key/value pairs in myDict
        myDict.Add("1", "C");
        myDict.Add("2", "C++");
        myDict.Add("3", "Java");
        myDict.Add("4", "Python");
        myDict.Add("5", "C#");
        myDict.Add("6", "HTML");
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs"+
              " in myDict are : " + myDict.Count);
  
        // To get the values alone, use the Values property.
        Dictionary<string, string>.ValueCollection valueColl = 
                                                myDict.Values;
  
        // The elements of the ValueCollection 
        // are strongly typed with the type 
        // that was specified for dictionary values.
        foreach(string s in valueColl)
        {
            Console.WriteLine("Value = {0}", s);
        }
    }
}

chevron_right


Output:

Total key/value pairs in myDict are : 6
Value = C
Value = C++
Value = Java
Value = Python
Value = C#
Value = HTML


Methods

Method Description
Add(TKey, TValue) Adds the specified key and value to the dictionary.
Clear() Removes all keys and values from the Dictionary<TKey,TValue>.
ContainsKey(TKey) Determines whether the Dictionary<TKey,TValue> contains the specified key.
ContainsValue(TValue) Determines whether the Dictionary<TKey,TValue> contains a specific value.
Equals(Object) Determines whether the specified object is equal to the current object.
GetEnumerator() Returns an enumerator that iterates through the Dictionary<TKey,TValue> .
GetHashCode() Serves as the default hash function.
GetObjectData(SerializationInfo, StreamingContext) Implements the ISerializable interface and returns the data needed to serialize the Dictionary<TKey,TValue> instance.
GetType() Gets the Type of the current instance.
MemberwiseClone() Creates a shallow copy of the current Object.
OnDeserialization(Object) Implements the ISerializable interface and raises the deserialization event when the deserialization is complete.
Remove(TKey) Removes the value with the specified key from the Dictionary<TKey,TValue>.
ToString() Returns a string that represents the current object.
TryGetValue(TKey, TValue) Gets the value associated with the specified key.

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to remove all entries
//  from Dictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Create a new dictionary of 
        // strings, with string keys.
        Dictionary<string, string> myDict = 
          new Dictionary<string, string>();
  
        // Adding key/value pairs in myDict
        myDict.Add("1", "C");
        myDict.Add("2", "C++");
        myDict.Add("3", "Java");
        myDict.Add("4", "Python");
        myDict.Add("5", "C#");
        myDict.Add("6", "HTML");
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs "+
                "in myDict are : " + myDict.Count);
  
        myDict.Clear();
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs in "+
             "myDict after Clear() operation are : "
                                        myDict.Count);
    }
}

chevron_right


Output:

Total key/value pairs in myDict are : 6
Total key/value pairs in myDict after Clear() operation are : 0

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to remove the entry with
// the specified key from the Dictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Create a new dictionary of 
        // strings, with string keys.
        Dictionary<string, string> myDict = 
          new Dictionary<string, string>();
  
       // Adding key/value pairs in myDict
        myDict.Add("1", "C");
        myDict.Add("2", "C++");
        myDict.Add("3", "Java");
        myDict.Add("4", "Python");
        myDict.Add("5", "C#");
        myDict.Add("6", "HTML");
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs "+
                "in myDict are : " + myDict.Count);
  
        // Remove the entry with the 
        // specified key from the Dictionary
        myDict.Remove("Russia");
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs in"+
          " myDict after Remove() operation are : "
                                       myDict.Count);
    }
}

chevron_right


Output:

Total key/value pairs in myDict are : 6
Total key/value pairs in myDict after Remove() operation are : 6

Reference:



My Personal Notes arrow_drop_up

Coder Machine Learner Social Activist Vocalist

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.