difference-between-hashtable-and-dictionary

Difference between Hashtable and Dictionary

Difference between Hashtable and Dictionary

Hey readers, till day you have read Insert data into Database table using SQLBulkCopy class in C#Ping in C# , Call method after specific time interval C#Insert Retrieve images from Database in asp.net LINQ TO SQLCompare two objects in C# and datakey from GridView RowCommand. Today we will discuss regarding Difference between Hashtable and Dictionary with an example.

First of all we will try to understand what is Hashtable in C#?

Hashtable was introduced with Framework 1.1. Hashtable computes hash of each key which has been added.Each element is a key/value pair stored in a DictionaryEntry object. HashTable is thread safe for use by multiple reader threads and a single writing thread. Key must be non-null, but value could be null.

Hashtable Example:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        Hashtable hashtable = new Hashtable();
        hashtable.Add("EmployeeName", "Pole");
        hashtable.Add("EmployeeNo", 100);
        hashtable.Add("Position", "Developer");
        hashtable.Add("JoiningDate", null);

        if (hashtable.ContainsKey("EmployeeName"))
            Console.WriteLine("Employee Name: "+Convert.ToString(hashtable["EmployeeName"]));
        Console.WriteLine("Joining Date: " + Convert.ToString(hashtable["JoiningDate"]));
        Console.ReadKey();
    }
}

OUTPUT:
Employee Name: Pole
Joining Date:

 

What is Dictionary in C#?

Dictionary was introduced with Framework 2.0. Dictionary could be used when fast lookup is needed. Key and Value must not be null.

Dictionary Example:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        Dictionary<int, string> dictEmployees = new Dictionary<int, string>() { { 1, "Pole" }, { 2, "Adam" } };
        foreach (KeyValuePair<int, string> pair in dictEmployees)
            Console.WriteLine("{0}, {1}", pair.Key, pair.Value);

        Console.ReadKey();
    }
}

OUTPUT:
1, Pole
2, Adam
Difference between Hashtable and Dictionary
Hashtable
Dictionary
Slower than dictionary because it requires boxing and unboxing Faster than a Hashtable because there is no boxing and unboxing
Returns null if we try to find a key which does not exist Returns error if we try to find a key which does not exist
All the members in a Hashtable are thread safe Only public static members are thread safe
Hashtable is not a generic type Dictionary is a generic type
Key/value pair stored in a DictionaryEntry object Key/value pair stored in a KeyValuePair object

Leave a Reply