ProgrammationDéveloppeur VB.NET

Comment les tableaux et les collections sont-ils implémentés en Visual Basic ? Comparez les tableaux standard, Collection, ArrayList et List(Of T) en termes de capacités et d'application.

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

En Visual Basic, il existe plusieurs moyens d'organiser des ensembles de données :

  • Tableaux standard (Dim arr(10) As Integer) : taille statique, accès rapide par indice, ne peut pas être agrandi dynamiquement.

  • Collection (collection d'objets) : extensible dynamiquement, peut stocker des éléments de tous types (mais sans typage strict), accès par clé et par indice, supporte For Each.

  • ArrayList (en VB.NET) : collection obsolète, stocke des objets de type Object, ne supporte pas les génériques (Generic), nécessite un casting.

  • List(Of T) (en VB.NET) : collection typée, taille dynamique, accès rapide, supporte LINQ, sécurisée par type de données.

Exemples d'utilisation :

Tableau standard :

Dim numbers(4) As Integer numbers(0) = 10

Collection :

Dim coll As New Collection() corr.Add("apple") corr.Add(123) For Each item In coll Debug.Print(item) Next

ArrayList :

Dim arrList As New ArrayList() arrList.Add("abc") arrList.Add(123)

List(Of T) :

Dim list As New List(Of Integer)() list.Add(10) list.Add(20) For Each num As Integer In list Console.WriteLine(num) Next

Question piégeuse.

Quel est le principal problème qui peut survenir lors de l'utilisation de ArrayList par rapport à List(Of T) ?

Réponse : ArrayList stocke des éléments comme Object, nécessitant un casting explicite lors de l'accès aux éléments, ce qui augmente le risque de recevoir un InvalidCastException à l'exécution. List(Of T) assure un typage strict au moment de la compilation, éliminant de telles erreurs.

Dim arrList As New ArrayList() arrList.Add(100) ' Dim s As String = arrList(0) ' Erreur d'exécution Dim n As Integer = CType(arrList(0), Integer) ' OK

Exemples d'erreurs réelles dues à une méconnaissance des subtilités du sujet.


Histoire

Dans le système financier, des tableaux standard ont été utilisés activement pour stocker des données de taille dynamique. Lorsque la taille préalablement allouée était dépassée, les tableaux étaient "coupés", ce qui entraînait la perte de transactions pendant les périodes de forte charge.


Histoire

En travaillant avec ArrayList, des chaînes et des nombres ont été ajoutés à la collection, puis une tentative de calcul de la somme des éléments a échoué. L'application a planté avec une exception lors du casting, car les chaînes ne peuvent pas être additionnées avec des nombres.


Histoire

Une Collection a été utilisée pour stocker des classes de commandes, mais les types d'éléments n'ont pas été vérifiés. Par erreur, du texte a été ajouté au lieu d'un objet commande dans un module, entraînant un échec de toute la logique métier lors de la tentative d'appel de méthodes d'un objet inexistant.