In C#, Dictionary is a generic collection which is generally used to store key/value pairs. Dictionary is defined under System.Collection.Generics namespace. It is dynamic in nature means the size of the dictionary is growing according to the need. Example:
CSharp
using System;
using System.Collections.Generic;
class GFG {
static public void Main()
{
Dictionary< string , string > My_dict =
new Dictionary< string , string >();
My_dict.Add("a.01", "C");
My_dict.Add("a.02", "C++");
My_dict.Add("a.03", "C#");
foreach (KeyValuePair< string , string > element in My_dict)
{
Console.WriteLine("Key:- {0} and Value:- {1}",
element.Key, element.Value);
}
}
}
|
Output:
Key:- a.01 and Value:- C
Key:- a.02 and Value:- C++
Key:- a.03 and Value:- C#
A Hashtable is a collection of key/value pairs that are arranged based on the hash code of the key. Or in other words, a Hashtable is used to create a collection which uses a hash table for storage. It is the non-generic type of collection which is defined in System.Collections namespace. In Hashtable, key objects must be immutable as long as they are used as keys in the Hashtable. Example:
CSharp
using System;
using System.Collections;
class GFG {
static public void Main()
{
Hashtable my_hashtable = new Hashtable();
my_hashtable.Add("A1", "Welcome");
my_hashtable.Add("A2", "to");
my_hashtable.Add("A3", "GeeksforGeeks");
foreach (DictionaryEntry element in my_hashtable)
{
Console.WriteLine("Key:- {0} and Value:- {1} ",
element.Key, element.Value);
}
}
}
|
Output:
Key:- A3 and Value:- GeeksforGeeks
Key:- A2 and Value:- to
Key:- A1 and Value:- Welcome
Hashtable Vs Dictionary
.math-table { border-collapse: collapse; width: 100%; } .math-table td { border: 1px solid #5fb962; text-align: left !important; padding: 8px; } .math-table th { border: 1px solid #5fb962; padding: 8px; } .math-table tr>th{ background-color: #c6ebd9; vertical-align: middle; } .math-table tr:nth-child(odd) { background-color: #ffffff; }Â
Hashtable |
Dictionary |
A Hashtable is a non-generic collection. |
A Dictionary is a generic collection. |
Hashtable is defined under System.Collections namespace. |
Dictionary is defined under System.Collections.Generic namespace. |
In Hashtable, you can store key/value pairs of the same type or of the different type. |
In Dictionary, you can store key/value pairs of same type. |
In Hashtable, there is no need to specify the type of the key and value. |
In Dictionary, you must specify the type of key and value. |
The data retrieval is slower than Dictionary due to boxing/ unboxing. |
The data retrieval is faster than Hashtable due to no boxing/ unboxing. |
In Hashtable, if you try to access a key that doesn’t present in the given Hashtable, then it will give null values. |
In Dictionary, if you try to access a key that doesn’t present in the given Dictionary, then it will give error. |
It is thread safe. |
It is also thread safe but only for public static members. |
It doesn’t maintain the order of stored values. |
It always maintain the order of stored values. |
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
21 Feb, 2023
Like Article
Save Article