Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

C# | Dictionary Class

  • Last Updated : 01 Sep, 2021

The Dictionary<TKey, TValue> Class in C# is a collection of Keys and Values. It is a generic collection class in the System.Collections.Generic 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



ConstructorDescription
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:

C#




// 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);
        }
    }
}
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

PropertiesDescription
ComparerGets the IEqualityComparer<TKey, TValue> that is used to determine equality of keys for the dictionary.
CountGets the number of key/value pairs contained in the Dictionary<TKey, TValue>.
Item[TKey]Gets or sets the value associated with the specified key.
KeysGets a collection containing the keys in the Dictionary<TKey, TValue>.
ValuesGets a collection containing the values in the Dictionary<TKey, TValue>.

Example 1:

C#




// 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);
        }
    }
}
Output: 
Total key/value pairs in myDict are : 6
Key = 1
Key = 2
Key = 3
Key = 4
Key = 5
Key = 6

 

Example 2:

C#




// 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);
        }
    }
}
Output: 
Total key/value pairs in myDict are : 6
Value = C
Value = C++
Value = Java
Value = Python
Value = C#
Value = HTML

 

Methods

MethodDescription
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:

C#




// 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);
    }
}
Output: 
Total key/value pairs in myDict are : 6
Total key/value pairs in myDict after Clear() operation are : 0

 

Example 2:

C#




// 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);
    }
}
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
Recommended Articles
Page :