Archive for January, 2010


C# : Difference between Hashtable and Dictionary


 

When we want a collection  data structure to hold data as key/value pairs, we have two obvious choices.

1. Dictionary

2. Hashtable

So basically what is the difference between both this and when to use which. Lets check it out. Point by Point.

1) Generics

Dictionary is a generic type, Hashtable is not. Now what that means. This is the most important aspect one should consider when taking decision. Dictionary is a generic type means

- You get type safety with Dictionary, because you can’t insert any random object into it, and you don’t have to cast the values you take out.

- And also generic collections are a lot faster as there’s no boxing/unboxing

- Hashtable uses Object to hold things internally (Only non-generic way to do it). So you have to take care of type safety and cast it to appropriate data type when you take it out, but it also means that you can add keys and values of any type ( It is good or bad, well it depends :) )

- Again Hashtable also have to box/unbox, which may have memory consumption as well as performance penalties.

2) Thread Safety :

In .Net Hashtable is thread safe for use by multiple reader threads and a single writing thread, while in Dictionary public static members are thread safe, but any instance members are not guaranteed to be thread safe.

One more thing that can make difference is,  we can not use dictionary (generics) with web services. The reason is no web service standard supports generics standard.

Technorati Tags: ,,,,,,,,

Windows Live Tags: C#,Hashtable,Dictionary,collection,Generics,instance,services,supports,collections

WordPress Tags: C#,Hashtable,Dictionary,collection,Generics,instance,services,supports,collections

Follow me on Twitter |