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.
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