A Dictionary<TKey, TValue> is a generic collection that consists of elements as key/value pairs that are not sorted in an order. For example,
Dictionary<int, string> country = new Dictionary<int, string>();
Here, country is a dictionary that contains int type keys and string type values.
Create a Dictionary
To create a dictionary in C#, we need to use the System.Collections.Generic namespace. Here is how we can create a dictionary in C#.
// create a dictionary
Dictionary<dataType1, dataType2> dictionaryName = new Dictionary<dataType1, dataType2>();
Here,
dictionaryName- name of the dictionarydataType1- datatype of keysdataType2- datatype of values
Example: Create a Dictionary
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<int, string> country = new Dictionary<int, string>();
        // add items to dictionary
        country.Add(5, "Brazil");
        country.Add(3, "China");
        country.Add(4, "Usa");
        // print value having key is 3        
        Console.WriteLine("Value having key 3: " + country[3]);
    }
}
Output
Value having key 3: China
In the above example, we have created a dictionary named country. 
The keys are of int type and values are of string type.
Basic Operations on Dictionary
In C#, we can perform different operations on a dictionary. We will look at some commonly used Dictionary<TKey, TValue> operations in this tutorial:
- Add Elements
 - Access Elements
 - Change Elements
 - Remove Elements
 
Let's see how we can perform these operations in detail.
Add Elements in Dictionary
C# provides the Add() method using which we can add elements in the dictionary. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> mySongs = new Dictionary<string, string>();
        // add items to dictionary
        mySongs.Add("Queen", "Break Free");
        mySongs.Add("Free", "All right now");
        mySongs.Add("Pink Floyd", "The Wall");
    }
}
In the above example, we have created a Dictionary<TKey, TValue> named mySongs. 
Here we have added key/value pairs using the Add() method where,
- keys - 
"Queen","Free"and"Pink Floyd" - values - 
"Break Free","All right now"and"The Wall" 
Another way to add Elements to Dictionary
Add() method 
We can add elements inside the dictionary without using the Add() method. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary and add elements 
        Dictionary<string, string> songs = new Dictionary<string, string>() {
                                                                   { "Queen", "Break Free" },
                                                                   { "Free", "All right now" } };
    } 
}
This is also called collection-initializer.
Access Dictionary Elements
We can access the elements inside the dictionary using it's keys. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> student = new Dictionary<string, string>();
        // add items to dictionary
        student.Add("Name", "Susan");
        student.Add("Faculty", "History");
        // access the value having key "Name"
        Console.WriteLine(student["Name"]);
        // access the value having key "Faculty"
        Console.WriteLine(student["Faculty"]);
    }
}
Output
Susan History
In the above example, we have accessed the values of the dictionary using their keys:
student["Name"]- accesses the value whose key is"Name"student["Faculty"]- accesses the value whose key is"Faculty"
Iterate through Dictionary
In C#, we can also loop through each element of the dictionary using a foreach loop. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> car = new Dictionary<string, string>();
        // add items to dictionary
        car.Add("Model", "Hyundai");
        car.Add("Price", "36K");
        // iterate through the car dictionary 
        foreach (KeyValuePair<string, string> items in car)
        {
            Console.WriteLine("{0} : {1}", items.Key, items.Value);
        }
    }
}
Output
Model : Hyundai Price : 36K
In the above example, we have looped through car using a foreach loop. 
Here, the Key and Value property returns a collection containing keys and values in the dictionary. 
Change Dictionary Elements
We can change the value of elements in dictionary as:
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> car = new Dictionary<string, string>();
        // add items to dictionary
        car.Add("Model", "Hyundai");
        car.Add("Price", "36K");
        // print the original value
        Console.WriteLine("Value of Model before changing: " + car["Model"]);
        // change the value of "Model" key to "Maruti"
        car["Model"] = "Maruti";
        // print new updated value of "Model"
        Console.WriteLine("Value of Model after changing: " + car["Model"]);
    }
}
Output
Value of Model before changing: Hyundai Value of Model after changing: Maruti
Here, we have changed the value of the "Model" key in the car dictionary.
Remove Dictionary Elements
To remove the elements inside the dictionary we use:
Remove()- removes the key/value pair from the dictionary
For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> employee = new Dictionary<string, string>();
        // add items to dictionary
        employee.Add("Name", "Marry");
        employee.Add("Role", "Manager");
        employee.Add("Address", "California");
        Console.WriteLine("Original Dictionary :");
        // iterate through the modified dictionary 
        foreach (KeyValuePair<string, string> items in employee)
        {
            Console.WriteLine("{0} : {1}", items.Key, items.Value);
        }
        // remove value with key "Role"
        employee.Remove("Role");
        Console.WriteLine("\nModified Dictionary :");
        // iterate through the modified dictionary 
        foreach (KeyValuePair<string, string> items in employee)
        {
            Console.WriteLine("{0} : {1}", items.Key, items.Value);
        }
    }
}
Output
Original Dictionary : Name : Marry Role : Manager Address : California Modified Dictionary : Name : Marry Address : California
In the above example, we have removed the element whose key is "Role". 
Here, employee.Remove("Role") removes the key/value pair "Role" : "Manager" from the employee dictionary. 
So when we iterate through employee we get a modified dictionary.
Note: If you want to remove all the elements of the dictionary, use the Clear() method.
Frequently Asked Questions
We can also create a dictionary using var keyword. For example,
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        // create a dictionary named fruits 
        var fruits = new Dictionary<int, string>() {
            {1, "Apple"},
            {2, "Orange"},
        };
        // print value having key 2
        Console.WriteLine(fruits[2]);
    }
}
Output
Orange