Dépannage des collections

Mise à jour : novembre 2007

Cette page répertorie quelques problèmes courants qui peuvent se produire lors de l'utilisation des collections.

Utilisation d'un type de collection incorrect

Plusieurs types de collection sont disponibles pour un développeur Visual Basic : la classe CollectionVisual Basic et les classes de collection fournies par le .NET Framework. Ces classes ne sont pas compatibles entre elles. En d'autres termes, si vous déclarez une variable comme étant d'un type de collection, vous ne pouvez pas lui assigner un objet d'un autre type. De même, vous pouvez accéder uniquement aux méthodes et aux propriétés du type de collection déclaré.

Les principales différences entre les classes de collection Visual Basic et celles du .NET Framework sont les suivantes :

  • Base d'Index. Les collections du .NET Framework sont de base zéro, tandis que la collection Visual Basic est de base 1. Cela signifie que les éléments d'une collection Visual Basic ont des valeurs d'index comprises entre 1 et la valeur de Count, propriété (objet Collection), tandis que les éléments d'une collection du .NET Framework ont des valeurs d'index comprises entre 0 et une valeur inférieure d'une unité à la valeur de la propriété Count de la collection.

  • Type d'élément. La collection Visual Basic prend en charge des éléments de type Object, qui n'est pas un type sécurisé car vous pouvez ajouter un élément à un type de données. Cela entraîne généralement une diminution des performances car le compilateur doit soumettre les éléments à une conversion boxing et unboxing pour les convertir vers et à partir du Object, type de données. Certaines collections du .NET Framework contiennent également des éléments de type Object, mais beaucoup d'autres sont fortement typées, c'est-à-dire qu'elles prennent en charge des éléments d'un type spécifique, ce qui leur confère un type sécurisé et optimise les performances.

  • Éléments de clé. La collection Visual Basic vous permet de spécifier une clé lorsque vous lui ajoutez un élément. La clé est une valeur String unique que vous pouvez utiliser ultérieurement pour accéder à cet élément particulier. Les collections du .NET Framework varient en ce qui concerne les clés. Certaines prennent en charge des clés et d'autres pas.

Les espaces de noms qui contiennent les diverses définitions de classe de collection sont les suivantes :

  • Microsoft.VisualBasic — la classe CollectionVisual Basic

  • System.Collections — les classes de collection spécifiques telles que les listes, les files d'attente, les tableaux de bits, les tables de hachage et les dictionnaires

  • System.Collections.Generic — les classes de collection génériques qui vous permettent de créer des collections fortement typées et de spécifier le type de données d'élément lors de leur création

  • System.Collections.Specialized — les classes de collection spécialisées et fortement typées, telles que les dictionnaires de liste liée et hybrides, les collections à vecteur de bits et d'objets de nom et les collections à chaîne uniquement

Approche correcte

Choisissez le type de collection qui convient le mieux à vos besoins. Déclarez votre variable de collection comme étant de ce type, et pensez à créer un objet de ce même type. Utilisez la qualification complète pour spécifier le type de collection prévu. L'exemple suivant affiche deux déclarations présentant une qualification complète.

Dim customers As New Microsoft.VisualBasic.Collection()
Dim stringQueue As New System.Collections.Generic.Queue(Of String)

Une fois que vous avez créé une collection d'un type spécifique, utilisez uniquement les méthodes et les propriétés définies sur ce type. Définissez Option Strict On pour intercepter les assignations d'objet ou les accès de membre incorrects au moment de la compilation.

Voir aussi

Concepts

Collections en Visual Basic

Classe de la collection Visual Basic

Référence

Option Strict, instruction