Le Dictionary en Visual Basic est une collection associative qui permet de stocker des paires clé-valeur. En VB.NET, on utilise pour cela Dictionary(Of TKey, TValue) de l'espace de noms System.Collections.Generic.
Les versions antérieures de Visual Basic étaient limitées aux collections classiques (Collection), qui ne prenaient en charge que des clés de type chaîne ou numérique sans typage. Avec l'avènement de VB.NET et du .NET Framework, les collections ont vu l'apparition du Dictionary générique, qui a rendu le travail avec des données associatives plus sûr et plus rapide.
Les erreurs typiques lors de l'utilisation de Dictionary incluent :
Lorsque vous travaillez avec Dictionary, il est crucial de :
ContainsKeyExemple de code :
Dim dict As New Dictionary(Of String, Integer) dict("apples") = 10 ' Vérification sécurisée avant d'accéder : If dict.ContainsKey("bananas") Then Console.WriteLine(dict("bananas")) Else Console.WriteLine("Clé non trouvée !") End If
Caractéristiques clés :
Quelle exception est lancée lors de la tentative d'accès à une clé inexistante dans un Dictionary et comment l'éviter ?
Erreur : System.Collections.Generic.KeyNotFoundException. Il faut utiliser la méthode ContainsKey pour éviter cette erreur.
Peut-on modifier les clés des éléments déjà existants dans un Dictionary ?
Non. Une clé ne peut pas être modifiée après son ajout — il faut simplement supprimer l'élément et en ajouter un nouveau avec une autre clé.
Quelle est la différence entre Dictionary et Hashtable en VB.NET ?
Le Dictionary est sûr en ce qui concerne les types (générique), fonctionne plus rapidement et ne nécessite pas d'emballage/déballage des valeurs. Hashtable est ancien et déconseillé à l'utilisation.
** Cas négatif
Un programmeur enregistre des statistiques de ventes par ville à l'aide d'un Dictionary, mais ne vérifie pas si la ville-clé se trouve dans la collection avant d'accéder. Il obtient une KeyNotFoundException lorsque le rapport est pris pour une nouvelle ville.
Avantages :
Inconvénients :
** Cas positif
Le même rapport, mais lors de l'accès à la clé, la vérification ContainsKey est toujours utilisée, et si la clé est manquante, 0 est renvoyé ou un message est affiché.
Avantages :
Inconvénients :