<p>Pour ce que cela vaut, un Dictionary <strong>est</strong> (conceptuellement) une table de hachage.</p>
<p>Si vous vouliez dire « pourquoi utilisons-nous la classe <code>Dictionary<TKey, TValue></code> au lieu de la classe <code>Hashtable</code> ? », alors la réponse est simple : <code>Dictionary<TKey, TValue></code> est un type générique, <code>Hashtable</code> ne l’est pas. Cela signifie que vous obtenez la sécurité de type avec <code>Dictionary<TKey, TValue></code>, car vous ne pouvez pas y insérer n’importe quel objet au hasard, et vous n’avez pas besoin de convertir (cast) les valeurs que vous en extrayez.</p>
<p>Fait intéressant, l’implémentation de <code>Dictionary<TKey, TValue></code> dans le .NET Framework est basée sur <code>Hashtable</code>, comme vous pouvez le constater à partir de ce commentaire dans son code source :</p>
<p>The generic Dictionary was copied from Hashtable’s source</p>
<p><a href="http://referencesource.microsoft.com/#mscorlib/system/collections/hashtable.cs">Source</a></p>