Collections en Visual Basic
Mise à jour : novembre 2007
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, qui vous permet de définir et de 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, objet (Visual Basic).
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 du .NET Framework, tandis que la variable localControls est une Collection de 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. Une collection de base zéro signifie que l'index du premier élément de la collection est 0, et une collection de base un signifie que l'index est 1. Un exemple de collection de base zéro est la collection Controls du .NET Framework, décrite précédemment dans cette page. L'objet Collection de Visual Basic est un exemple de collection de base un.
Les collections de base un peuvent être plus intuitives aux utilisateurs Visual Basic, car l'index est compris entre 1 et la valeur de Count, propriété (objet Collection), qui retourne le nombre d'éléments contenus 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 du .NET Framework sont de base zéro pour les besoins de normalisation. La classe Collection de Visual Basic est une classe de base un qui sert à assurer une compatibilité avec des versions précédentes.
Valeurs d'index et de clés
Les instances de la classe Collection de 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 de 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. Puisque l'objet Collection de Visual Basic est un outil de programmation à caractère général, il est plus flexible que certaines autres collections. Il dispose de Add, méthode (objet Collection) pour insérer des éléments dans la collection et de Remove, méthode (objet Collection) pour récupérer des éléments.
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
Comment : créer un tableau d'objets
Comment : ajouter, supprimer et récupérer des éléments d'une collection
Comment : définir des collections dans vos classes
Comment : parcourir une collection dans Visual Basic