C# Dictionary with examples - GeeksforGeeks

28 Feb, 2019
In C#, Dictionary is a generic collection which is generally used to store key/value pairs. The working of Dictionary is quite similar to the non-generic hashtable. The advantage of Dictionary is, it is generic type. Dictionary is defined under System.Collection.Generic namespace. It is dynamic in nature means the size of the dictionary is grows according to the need.
Important Points:
The Dictionary class implements theIDictionary<TKey,TValue> InterfaceIReadOnlyCollection<KeyValuePair<TKey,TValue>> InterfaceIReadOnlyDictionary<TKey,TValue> InterfaceIDictionary Interface
IDictionary<TKey,TValue> Interface
IReadOnlyCollection<KeyValuePair<TKey,TValue>> Interface
IReadOnlyDictionary<TKey,TValue> Interface
IDictionary Interface
In Dictionary, the key cannot be null, but value can be.
In Dictionary, key must be unique. Duplicate keys are not allowed if you try to use duplicate key then compiler will throw an exception.
In Dictionary, you can only store same types of elements.
The capacity of a Dictionary is the number of elements that Dictionary can hold.
Dictionary class has 7 constructors which are used to create the Dictionary, here we only use Dictionary<TKey, TValue>() constructor and if you want to learn more about constructors then refer C# | Dictionary Class.
Dictionary<TKey, TValue>(): This constructor is used to create an 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 as follows:
Step 1: IncludeSystem.Collection.Generics namespace in your program with the help of using keyword.
Syntax:
using System.Collection.Generics; 
Step 2: Create a Dictionary using Dictionary<TKey, TValue> class as shown below:
Dictionary dictionary_name = new Dictionary();
Step 3: If you want to add elements in your Dictionary then use Add() method to add key/value pairs in your Dictionary. And you can also add key/value pair in the dictionary without using Add method. As shown in the below example.
Step 4: The key/value pair of the Dictionary is accessed using three different ways:
for loop: You can use for loop to access the key/value pairs of the Dictionary.Example: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)]);}
Example:
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)]);}
Using Index: You can access individual key/value pair of the Dictionary by using its index value. Here, you just specify the key in the index to get the value from the given dictionary, no need to specify the index. Indexer always takes the key as a parameter, if the given key is not available in the dictionary, then it gives KeyNotFoundException.Example:Console.WriteLine("Value is:{0}", My_dicti[1123]);Console.WriteLine("Value is:{0}", My_dicti[1125]);
Example:
Console.WriteLine("Value is:{0}", My_dicti[1123]);Console.WriteLine("Value is:{0}", My_dicti[1125]);
foreach loop: You can use foreach loop to access the key/value pairs of the dictionary.As shown in the below example we access the Dictionary using a foreach loop.
Example:
// C# program to illustrate how // to create a dictionaryusing 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);          }    }}
1123 and Welcome
1124 and to
1125 and GeeksforGeeks

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

In Dictionary, you are allowed to remove elements from the Dictionary. Dictionary<TKey, TValue> class provides two different methods to remove elements and the methods are:
Clear: This method removes all keys and values from the Dictionary<TKey,TValue>.
Remove: This method removes the value with the specified key from the Dictionary<TKey,TValue>.
Example:
// C# program to illustrate how // remove key/value pairs from // the dictionaryusing 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);              }}
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

In Dictionary, you can check whether the given key or value present in the specified dictionary or not. The Dictionary<TKey, TValue> class provides two different methods for checking and the methods are:
ContainsKey: This method is used to check whether the Dictionary<TKey,TValue> contains the specified key.
ContainsValue: This method is used to check whether the Dictionary<TKey,TValue> contains a specific value.
Example:
// C# program to illustrate how// to  check the given key or // value present in the dictionary// or notusing 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...!!");          }    }}
Key is not found...!!
Value is found...!!

CSharp Dictionary Class
CSharp-Generic-Namespace
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Difference between Abstract Class and Interface in C#
String.Split() Method in C# with Examples
C# | How to check whether a List contains a specified element
C# | IsNullOrEmpty() Method
C# | Delegates
C# | Arrays of Strings
C# | Abstract Classes
Difference between Ref and Out keywords in C#
Extension Method in C#
C# | String.IndexOf( ) Method | Set - 1