ProgrammationDéveloppeur VB.NET

Comment fonctionne l'accès aux éléments d'une collection de type List(Of T) en Visual Basic, quelles opérations sont disponibles et dans quels cas des erreurs se produisent-elles lors de l'accès par index ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

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 :

  • Taille dynamique, redistribution automatique de la mémoire
  • Accès indexé rapide O(1)
  • Sécurité de type (les erreurs de type sont exclues lors de la compilation)

Questions pièges.

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.

Erreurs courantes et anti-patterns

  • Accès à un index inexistant
  • Suppression/ajout d'éléments dans For Each
  • Manque de vérification de la vacuité avant l'accès

Exemple de la vie réelle

Cas négatif

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 :

  • Simplicité d'écriture

Inconvénients :

  • Le programme échouera avec une InvalidOperationException, les données ne seront pas traitées

Cas positif

Le code itère à travers les éléments de la fin vers le début avec For et supprime les objets correspondants.

Avantages :

  • Pas d'exceptions, tout est supprimé correctement

Inconvénients :

  • Lisez beaucoup plus difficilement la boucle.