Share via


Classe de la collection Visual Basic

Mise à jour : novembre 2007

Une collection permet de grouper un ensemble d'éléments apparentés. Il existe plusieurs types de collection. Les collections prédéfinies sont utilisées dans les applications Visual Basic à des fins multiples, par exemple le Control.ControlCollection sur un Form, retourné par la propriété Controls du formulaire. Vous pouvez également créer vos propres collections pour organiser et manipuler des objets.

Les collections représentent une méthode efficace pour assurer le suivi des objets que votre application doit créer et détruire de façon dynamique. Le fragment de code suivant illustre la façon d'utiliser la méthode Add Method d'un objet CollectionVisual Basic afin de conserver une liste des objets widget créés par l'utilisateur.

' Declare and create the Collection object.
Public widgetColl As New Microsoft.VisualBasic.Collection() 
' Create a new widget and add it to the widgetColl collection.
Private Sub makeAWidget()
    Dim tempWidget As New widget()
    widgetColl.Add(tempWidget) 
End Sub

Dans l'exemple précédent, la collection widgetColl organise et expose tous les objets widget créés par l'intermédiaire de la procédure makeAWidget. Vous pouvez extraire des références d'objet de chaque objet widget par l'index de la collection. La taille de la collection est automatiquement ajustée lorsqu'un nouvel objet widget est ajouté. Les instructions For Each...Next, instruction (Visual Basic) vous permettent de parcourir la collection. Si vous souhaitez assigner une clé à l'objet widget pour extraire ce dernier, vous pouvez affecter une chaîne de texte en tant que second paramètre de la méthode Add.

L'objet CollectionVisual Basic stocke tous ses éléments comme type Object, donc vous pouvez ajouter un élément de tout type de données. Il n'y a aucun dispositif de protection contre les types de données inappropriés qui sont ajoutés. Pour éviter cette limitation, vous pouvez utiliser les collections génériques de l'espace de noms System.Collections.Generic. Pour plus d'informations, consultez Comment : créer une collection d'objets.

Créer et détruire un objet de collection

Le mot clé New (Visual Basic) dans la déclaration pour la variable widgetColl entraîne la création d'un objet Collection lorsque le contrôle passe à l'instruction de déclaration. Comme Collection est une classe et non un type valeur, vous devez en créer une instance et conserver une référence à cette instance dans une variable. Cette instance est un objet CollectionVisual Basic.

Comme tout autre objet, un objet Collection est marqué pour une opération garbage collection (GC) lorsque la dernière variable qui contient une référence à cet objet a la valeur Nothing (Visual Basic) ou devient hors de portée. Toutes les références d'objet qu'il contient sont libérées lorsqu'il est récupéré par l'opération garbage collection. C'est la raison pour laquelle la variable widgetColl dans l'exemple précédent est déclarée dans la classe parente afin d'exister pendant toute la durée de vie du programme.

Une collection maintient des références aux objets qu'elle contrôle, mais ne contient pas les objets eux-mêmes. Par conséquent, supprimer un objet Collection ne supprime pas les objets qu'elle contrôle. Chaque objet individuel qui avait été un élément de la collection continue d'exister jusqu'à ce qu'il soit marqué individuellement pour une opération garbage collection.

Travailler avec des éléments

Les services de base (ajout, suppression et extraction d'éléments d'une collection) dépendent des clés et des index. Une clé est une valeur de type String. Cette valeur peut être un nom, un numéro de permis de conduire, un numéro de téléphone ou un entier converti en une chaîne. La méthode Add vous permet d'associer une clé à un élément, comme cela est décrit dans Comment : ajouter, supprimer et récupérer des éléments d'une collection.

Un index de la classe Collection est un entier compris entre 1 et le nombre d'éléments de la collection. Le Count, propriété (objet Collection) retourne le nombre actuel d'éléments. Vous pouvez contrôler la valeur initiale d'index d'un élément à l'aide des paramètres Before ou After lorsque vous appelez Add ; cette valeur peut toutefois changer lors de l'ajout ou de la suppression d'autres éléments. Pour plus d'informations, consultez Add, méthode (objet Collection).

Vous pouvez supprimer un seul élément d'une collection en passant sa clé ou son index à Remove, méthode (objet Collection). Vous pouvez vider une collection et supprimer tous les éléments à l'aide de Clear, méthode (objet Collection).

Accès aux éléments

Vous pouvez passer une valeur des touches à Contains, méthode (objet Collection) pour tester si une collection contient un élément avec cette clé. Vous pouvez récupérer un élément en passant sa clé ou son index à Item, propriété (objet Collection).

Vous pouvez utiliser des valeurs d'index et la propriété Item pour parcourir les éléments d'une collection ou vous pouvez utiliser For Each...Next, instruction (Visual Basic). L'exemple suivant illustre deux possibilités pour octroyer une augmentation de 10 % à tous les employés de la collection d'objets employee, si la variable employeesColl contient une référence à un objet Collection.

Option Strict On
' The following alternative uses the Count and Item properties.
Dim emp As employee
For counter As Integer = 1 To employeesColl.Count 
    emp = CType(employeesColl.Item(counter), employee)
    emp.payRate *= 1.1
Next counter
' The following alternative uses the For Each...Next statements.
For Each emp As employee In employeesColl
    emp.payRate *= 1.1
Next emp

Toutefois, si vous avez ajouté un ou plusieurs éléments à employeesColl qui ne sont pas de type employee, la boucle For Each lève une exception ArgumentException au moment de l'exécution.

Type de données des éléments

Un objet CollectionVisual Basic stocke chaque élément avec un type de données Object. Par conséquent, la plage de types de données que vous pouvez ajouter à un objet Collection est la même que la plage des types de données que vous pouvez stocker dans une variable Object. Vous pouvez par exemple ajouter des types de données, des objets et des tableaux standard, ainsi que des structures et des instances de classe définies par l'utilisateur.

Comme l'objet Collection stocke chaque élément comme un Object, la propriété Item retourne une valeur Object. Pour utiliser l'élément dans votre code, vous devez habituellement convertir de Object au type de données exécutable de l'élément. La méthode que vous employez dépend du paramètre du commutateur de vérification de type dans Option Strict, instruction.

Convertir implicitement d'un objet

Si Option Strict a la valeur Off, vous pouvez convertir implicitement un élément de Collection en son type de données approprié, comme le montre l'exemple suivant.

Option Strict Off
Dim sampleColl As New Microsoft.VisualBasic.Collection()
Dim sampleString As String = "This is a string"
Dim aString As String
sampleColl.Add(sampleString)
' The following statements convert the collection item to a string.
Try
    aString = sampleColl.Item(1) 
Catch ex As Exception
    ' Insert code to run if the collection item cannot be converted to String.
End Try

Convertir explicitement d'un objet

Si Option Strict a la valeur On, vous devez convertir explicitement de Object au type de données exécutable de l'élément. Pour obtenir un élément de Item de cette manière, vous pouvez utiliser le CType, fonction pour effectuer la conversion, comme le montre l'exemple suivant.

Option Strict On
Dim sampleColl As New Microsoft.VisualBasic.Collection()
Dim sampleString As String = "This is a string"
Dim aString As String
sampleColl.Add(sampleString)
' The following statements convert the collection item to a string.
Try
    aString = CType(sampleColl.Item(1), String) 
Catch ex As Exception
    ' Insert code to run if the collection item cannot be converted to String.
End Try

Services supplémentaires

Les propriétés et les méthodes de l'objet Collection ne fournissent que les services de base pour les collections. Par exemple, la méthode Add ne peut pas vérifier le type d'un élément ajouté à une collection, alors que vous pourriez vouloir procéder à cette vérification pour garantir que la collection ne comporte qu'un seul type d'élément. Si vous pouvez garantir cela dans la méthode Add, vous disposez d'une collection fortement typée, et il n'est pas nécessaire de convertir le retour de la propriété Item en son type de données exécutable. Les performances s'en trouvent améliorées.

Vous pouvez fournir des fonctionnalités plus fiables - et des propriétés, des méthodes et des événements supplémentaires - en créant votre propre classe de collection, comme cela est décrit dans Comment : définir des collections dans vos classes.

Voir aussi

Concepts

Collections en tant qu'alternative aux tableaux

Collections en Visual Basic

Référence

Collection, objet (Visual Basic)