C# Dictionary

In C#, Dictionary is a collection of <Key, Value> pairs.

In a C# Dictionary, Key has to be unique. Value could be a duplicate.

Define a C# Dictionary

To use a Dictionary, you have to use System.Collections.Generic namespace. To define a Dictionary, use Dictionary class with the following syntax.

Dictionary<keyDatatype, valueDatatype> dictionaryName = new Dictionary<keyDatatype, valueDatatype>();

Example

In the following example, we defined two C# dictionaries named dict1 and dict2.

Program.cs

using System.Collections.Generic;

namespace CSharpExamples {
    class Program {
        static void Main(string[] args) {
            Dictionary<int, string> dict1 = new Dictionary<int, string>();
            Dictionary<string, string> dict2 = new Dictionary<string, string>();
        }
    }
}

Dictionary dict1 stores key-value pairs where key is of int datatype and value is of string datatype.

Dictionary dict2 stores key-value pairs where key is of string datatype and value is of string datatype.

Initialize C# Dictionary with Entries

There are two methods to initialize a C# Dictionary.

The first method is to define a dictionary and add elements to it using Dictionary.Add() method.

Program.cs

using System.Collections.Generic;

namespace CSharpExamples {
    class Program {
        static void Main(string[] args) {
            Dictionary<int, string> dict1 = new Dictionary<int, string>();
            dict1.Add(1,"Tesla");
            dict1.Add(2,"Toyota");
        }
    }
}

The second method is to provide the key-value pairs in the definition as shown below.

Program.cs

using System.Collections.Generic;

namespace CSharpExamples {
    class Program {
        static void Main(string[] args) {
            Dictionary<int, string> dict1 = new Dictionary<int, string>(){
                {1, "Tesla"},
                {2, "Honda"},
                {3, "Toyota"}
            };
        }
    }
}

Print C# Dictionary

You can use foreach to access each of the item in Dictionary. In the following example, we access each item of the dictionary, and then get the key and values separately.

Program.cs

using System;
using System.Collections.Generic;

namespace CSharpExamples {
    class Program {
        static void Main(string[] args) {
            Dictionary<int, string> dict1 = new Dictionary<int, string>(){
                {1, "Tesla"},
                {2, "Honda"},
                {3, "Toyota"}
            };

            foreach(KeyValuePair<int, string> item in dict1) {
                Console.WriteLine(item.Key+" - "+item.Value);
            }
        }
    }
}

Output

PS D:\workspace\csharp\HelloWorld> dotnet run
1 - Tesla
2 - Honda
3 - Toyota

Count Number of Elements in Dictionary

To get the number of elements in a Dictionary, you can use Dictionary.Count property.

Program.cs

using System;
using System.Collections.Generic;

namespace CSharpExamples {
    class Program {
        static void Main(string[] args) {
            Dictionary<int, string> dict1 = new Dictionary<int, string>(){
                {1, "Tesla"},
                {2, "Honda"},
                {3, "Toyota"}
            };
            int count = dict1.Count;
            Console.WriteLine("Number of items in Dictionary : "+count);
        }
    }
}

Output

PS D:\workspace\csharp\HelloWorld> dotnet run
Number of items in Dictionary : 3

Update a Value for Key in Dictionary

To update a value for a key in dictionary, you can use the key as an index and dictionary as an array.

myDictionary[key] = value;

Program.cs

using System;
using System.Collections.Generic;

namespace CSharpExamples {
    class Program {
        static void Main(string[] args) {
            Dictionary<int, string> dict1 = new Dictionary<int, string>(){
                {1, "Tesla"},
                {2, "Honda"},
                {3, "Toyota"}
            };

            dict1[2] = "Volkswagen";

            foreach(KeyValuePair<int, string> item in dict1) {
                Console.WriteLine(item.Key+" - "+item.Value);
            }
        }
    }
}

Output

PS D:\workspace\csharp\HelloWorld> dotnet run
1 - Tesla
2 - Volkswagen
3 - Toyota

Delete an Item from C# Dictionary

To delete an Item from C# Dictionary, use Dictionary.Remove(key) method. The item with key passed as argument, shall be deleted.

Program.cs

using System;
using System.Collections.Generic;

namespace CSharpExamples {
    class Program {
        static void Main(string[] args) {
            Dictionary<int, string> dict1 = new Dictionary<int, string>(){
                {1, "Tesla"},
                {2, "Honda"},
                {3, "Toyota"}
            };

            dict1.Remove(2);

            foreach(KeyValuePair<int, string> item in dict1) {
                Console.WriteLine(item.Key+" - "+item.Value);
            }
        }
    }
}

Output

PS D:\workspace\csharp\HelloWorld> dotnet run
1 - Tesla
3 - Toyota

Conclusion

In this C# Tutorial, we learned what a Dictionary is in C#, how to define a dictionary and initialize it, access the items, modify or remove some of the items, etc.