Pourquoi Dictionary est-il préférable à Hashtable en C# ? Analysons les différences
Bonjour à tous ! Je suis un développeur C# débutant et j'ai rencontré une situation qui m'a dérouté. En étudiant les collections, je suis tombé sur deux classes similaires : `Hashtable` et `Dictionary`. Toutes deux, comme je l'ai compris, stockent des paires "clé-valeur" et permettent de rechercher rapidement des données par clé.
Dans les anciens exemples de code et dans certains livres, je vois souvent `Hashtable`. Par exemple, comme ceci :
```csharp
Hashtable table = new Hashtable();
table.Add("clé1", "valeur1");
table.Add(123, 42); // clé — int, valeur — int
string val = (string)table["clé1"]; // nécessite un cast explicite
```
Mais dans les projets modernes et sur Stack Overflow, tout le monde parle de `Dictionary`. J'ai essayé les deux options et j'ai remarqué qu'avec `Dictionary`, le code semble différent :
```csharp
Dictionary dict = new Dictionary();
dict.Add("clé1", "valeur1");
// dict.Add(123, 42); // Erreur de compilation ! Type incorrect
string val = dict["clé1"]; // pas besoin de cast
```
Ma question : quelle est la différence fondamentale