Historique de la question
La collection List(Of T) a été introduite dans VB.NET pour remplacer les collections obsolètes, offrant une sécurité de type, une taille dynamique et un accès rapide aux éléments par index. L'utilisation d'une liste permet de structurer les données, de travailler avec des éléments typés et d'éviter les erreurs communes liées aux collections non génériques.
Problème
Les débutants comprennent souvent mal comment accéder correctement aux éléments d'une liste, comment ajouter, modifier et supprimer des éléments, et ce qui se passe en cas d'utilisation incorrecte des index (par exemple, en dépassant les limites de la liste). Cela entraîne des exceptions lors de l'exécution du programme.
Solution
Dans List(Of T), les éléments sont indexés à partir de zéro. L'accès à un élément se fait par index tant pour la lecture que pour l'écriture. Si l'index est invalide, une exception ArgumentOutOfRangeException se produit. Les méthodes de collection permettent de travailler en toute sécurité avec les éléments :
Exemple de code :
Imports System.Collections.Generic Dim numbers As New List(Of Integer)() numbers.Add(10) numbers.Add(20) Dim first As Integer = numbers(0) ' Obtenir l'élément à l'index 0 numbers(1) = 99 ' Définir l'élément à l'index 1 ' Suppression numbers.RemoveAt(0) ' Supprimer par index
Caractéristiques clés :
Si l'on accède à un index égal au nombre d'éléments dans List(Of T), obtiendrons-nous le dernier élément ?
Non. L'indexation commence à 0, et l'index maximal autorisé est (Count - 1). En accédant à un index égal à Count, une erreur ArgumentOutOfRangeException se produira.
Peut-on ajouter un élément au milieu de List(Of T) sans supprimer les données existantes ?
Oui, en utilisant la méthode Insert :
numbers.Insert(1, 42) ' Insère 42 à la deuxième position, déplaçant les autres vers la droite.
Est-il dangereux de modifier une collection List(Of T) pendant une itération avec For Each ?
C'est dangereux. Cela entraînera une InvalidOperationException. Pour de telles opérations, utilisez For avec un index ou créez d'abord une liste pour la suppression.
Dans le programme, on itère à travers List(Of T) à l'aide de For Each et on supprime des éléments à l'intérieur de l'itération.
Avantages :
Inconvénients :
Le code itère à travers les éléments de la fin vers le début avec For et supprime les objets correspondants.
Avantages :
Inconvénients :