Collections en Visual Basic

En règle générale, une collection est un objet utilisé pour grouper et gérer des objets apparentés. Par exemple, chaque Form a une collection de contrôles. (Vous pouvez accéder à cette collection par l'intermédiaire de la propriété Controls du formulaire). Cette collection est un objet qui représente tous les contrôles de ce formulaire. Elle permet de récupérer un contrôle de la collection en fonction de son index et de parcourir les éléments de la collection à l'aide de For Each...Next, instruction (Visual Basic).

Toutefois, il existe plusieurs types de collections qui diffèrent les unes des autres de plusieurs façons.

Différents types de collection

Visual Basic fournit également une classe Collection, avec laquelle vous pouvez définir et créer vos propres collections. À l'instar de la collection Controls d'un formulaire, la classe Collection offre également une fonctionnalité intégrée qui vous permet de parcourir les éléments à l'aide de For Each...Next et de récupérer des éléments en fonction de leur index. Pour plus d'informations, consultez Collection.

Toutefois, les deux types de collection n'interagissent pas entre eux. Par exemple, le code suivant génère une erreur de compilation :

Dim localControls As Collection

' The following line generates a COMPILER ERROR.

localControls = Me.Controls()

Les collections sont incompatibles, car la collection Controls est une collection .NET Framework, tandis que la variable localControls est une Collection Visual Basic. Les deux types de collections sont implémentés à partir de classes différentes. Leurs méthodes sont semblables mais pas identiques, et leurs modèles d'indexation sont différents.

Collections de base zéro et de base un

Une collection peut être soit de base zéro, soit de base un, selon son index de départ. Dans une collection de base zéro, l'index du premier élément est 0 et dans une collection de base un, l'index du premier élément est 1. La collection Controls .NET Framework, présentée précédemment dans cette page, constitue un exemple de collection de base zéro. L'objet Collection Visual Basic constitue un exemple de collection de base un.

Les collections de base un peuvent sembler plus intuitives aux utilisateurs Visual Basic, car l'index varie de 1 à la valeur de la propriété Count, qui retourne le nombre d'éléments dans une collection. En revanche, l'index d'une collection de base zéro est compris entre 0 et une valeur inférieure d'une unité à la valeur de la propriété Count. Cela peut être approprié lorsque les valeurs d'index représentent des offsets d'une valeur de base ou correspondent aux membres d'une énumération de base zéro.

Les collections .NET Framework sont de base zéro pour des raisons de normalisation. La classe Collection Visual Basic est une classe de base un pour des raisons de compatibilité avec les versions précédentes.

Valeurs d'index et de clés

Les instances de la classe Collection Visual Basic vous permettent d'accéder à un élément à l'aide d'un index numérique ou d'une clé String. Vous pouvez ajouter des éléments aux objets Collection  Visual Basic en spécifiant ou non une clé. Si vous ajoutez un élément sans clé, vous devez utiliser son index numérique pour y accéder.

En revanche, les collections telles que System.Collections.ArrayList autorisent uniquement un index numérique. Vous ne pouvez pas associer de clés aux éléments de ces collections, à moins que vous construisiez votre propre mappage basé, par exemple, sur un tableau String qui contient les clés.

Ajout et suppression d'éléments

Une autre différence entre les collections est la possibilité d'y ajouter des éléments ainsi que la façon dont ces éléments sont ajoutés, le cas échéant. Dans la mesure où l'objet Collection Visual Basic est un outil de programmation à caractère général, il est plus flexible que certaines autres collections. Il comporte une méthode Add pour placer les éléments dans la collection et une méthode Remove pour les en retirer.

Par contre, certaines collections spécialisées ne vous permettent pas d'ajouter ou de supprimer des éléments en utilisant du code. Par exemple, la propriété CheckedListBox.CheckedItems retourne une collection de références à des éléments en fonction de leur index, mais votre code ne peut pas ajouter ou supprimer des éléments de cette collection. Seul l'utilisateur peut le faire en sélectionnant ou en effaçant la zone appropriée dans l'interface utilisateur. En effet, cette collection ne possède pas de méthode Add ou Remove.

Voir aussi

Tâches

Comment : créer une collection d'objets (Visual Basic)

Comment : créer un tableau d'objets (Visual Basic)

Comment : ajouter, supprimer et récupérer des éléments d'une collection (Visual Basic)

Comment : définir des collections dans vos classes (Visual Basic)

Comment : itérer au sein d'une collection dans Visual Basic

Dépannage des collections (Visual Basic)

Concepts

Vue d'ensemble des initialiseurs de collections (Visual Basic)

Gestion de groupes d'objets (Visual Basic)

Classe de la collection Visual Basic

Gestion de vos objets avec les collections (Visual Basic)