Why is Dictionary preferred over Hashtable in C#?
.net, c#, data-structures, vb.net
Solution
For what it's worth, a Dictionary is (conceptually) a hash table.
If you meant "why do we use the `Dictionary<TKey, TValue>` class instead of the `Hashtable` class?", then it's an easy answer: `Dictionary<TKey, TValue>` is a generic type, `Hashtable` is not. That means you get type safety with `Dictionary<TKey, TValue>`, because you can't insert any random object into it, and you don't have to cast the values you take out.
Interestingly, the `Dictionary<TKey, TValue>` implementation in the .NET Framework is based on the `Hashtable`, as you can tell from this comment in its source code:
The generic Dictionary was copied from Hashtable's source
Source
Problem
In most programming languages, dictionaries are preferred over hashtables. What are the reasons behind that?