VB.NET ArrayList

VB.NET ArrayList

VB.NET ArrayList

Du möchtest eine VB.NET ArrayList verwenden, bzw. deren Nutzen und Arbeitsweise verstehen?

Dann freue ich mich, Dich Aufgrund deiner Recherche in meinem Beitrag hier begrüßen zu dürfen!

Vielleicht interessieren Dich auch noch anderen Themen wie: VB.NET Array, Await-Anweisung.

Ein Spätzünder?

Ich muss persönlich zugeben, dass ich in meiner Karriere als .NET Entwickler erst sehr sehr spät auf die ArrayList gestoßen bin, da ich relativ früh schon Alternativen verwendet habe.

Wenn man wirklich stupide anfängt die Softwareentwicklung zu lernen, ist das Erste worauf man stößt vermutlich eine Variable.

Nachdem man dann damit begonnen hat zu arbeiten und ein wenig Erfahrung sammeln konnte, kommt man früher oder später an den Punkt, mehrere Elemente speichern zu müssen.

Das Nächste was man vor allem durch Bücher, etc. linear kennenlernt – statt mit den modernen Mitteln zu beginnen – ist vermutlich das Array.

Was ist eine ArrayList?

Über die Arrays hinweg stößt man eventuell früher oder später – bei mir später – auf die ArrayList.

Eine ArrayList dient dazu, analog zu einem Array mehrere Elemente zu speichern, mit allerdings einer Besonderheit.

Die ArrayList kann jedoch heterogene Elemente speichern, was eigentlich als unsauber gilt.

Deklaration einer VB.NET ArrayList

Hier schauen wir uns einmal eine einfache Deklaration – z. B. als Eigenschaft der Form – einer ArrayList an:

Public Class Form1
    Public Property MyList As ArrayList
End Class

Natürlich können wir die ArrayList mit dieser Art von Definition noch nicht verwenden, da es sich um eine Klasse handelt, Welche somit erst instanziiert werden muss.

Würde man jetzt im „Form Load“-Ereignis versuchen auf die Array-Liste zuzugreifen, würde man verständlicherweise eine Null-Verweis-Ausnahme bekommen:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    MyList.<AnyPropertyOrMethod> ' ...
End Sub

Wir müssen die (Array-) Liste also vorher z. B. im Konstruktor der Form instanziieren:

Sub New()
    InitializeComponent()
    MyList = New ArrayList()
End Sub

Initialisierung einer VB.NET ArrayList

In diesem Abschnitt schauen wir uns die Initialisierung – also die Deklaration inkl. Wert-Zuweisung“ an.

Private Sub MyTestSub()
    Dim list As ArrayList = New ArrayList()
    ' Or with Option Infer..
    ' Dim list = new ArrayList()
    list.<PropertyOrMethodEtc> ' ..
End Sub

Hier drüber habe ich z. B. die ArrayList namens „list“ einmal ohne und einmal mit Option Infer instanziiert.

Danach können wir dann mit verschiedenen Eigenschaften, Methoden, oder Ereignissen arbeiten.

Hinzufügen von Elementen

Um der ArrayList ein Element hinzuzufügen, können wir z. B. die Add-Methode verwenden.

list.Add("John")

Möchtest Du hingegen mehrere Elemente in einem einzigen Schritt hinzufügen, kannst Du auch die AddRange-Methode verwenden.

list.AddRange(New Object() {"Abc", 1, Now})

Und hier stoßen wir dann schon auf einen durchaus negativen Aspekt, denn die Liste kann wie Du siehst non-typisiert sein.

Das bedeutet, dass Sie letztendlich Elemente von verschiedenen Typen unterbringen kann.

Hier nochmal ein Beispiel mit Objekten des gleichen Typs:

list.AddRange(New String() {"John", "Max", "Diona"})

Untypisiert – Ein negativer Aspekt

Wie hier kurz drüber angesprochen kann die ArrayList Objekte, bzw. Elemente von verschiedenen Typen aufnehmen.

Programmiertechnisch gesagt ist Sie also non-, bzw. untypisiert – sie folgt daher keinem speziellen Typ wie z. B. einem String, oder einem Integer.

Allgemein gilt diese Vorgehensweise als relativ unsauber, da man praktisch Äpfel mit Birnen vergleicht.

Es gibt jedoch Ausnahmen, wo man ähnlich vorgehen könnte, allerdings würde man dann dort vermutlich sinnvolle Basisklassen oder Schnittstellen verwenden.

Outdated – Weiterer negativer Aspekt

Wie man auch auf der Website der .NET-Dokumentation über die ArrayList weiter unten nachlesen kann, ist Diese veraltet und sollte für neue Entwicklungen nicht mehr verwendet werden.

Falls Du in deinem Programm eine heterogene Auflistung – also eine Auflistung von unterschiedlichen – Objekten benötigen solltest, kannst Du dafür auf die List-Klasse zurückgreifen.

Die List-Klasse ist auch – und besonders – für die Auflistung ähnlicher, also homogener Objekte geeignet.

Entfernen von Elementen

Nachdem wir uns nun angeschaut haben, wie man Elemente auf verschiedene Arten hinzufügen kann, schauen wir uns nun das gegenteilige Entfernen von Elementen an.

Um Elemente aus einer ArrayList zu entfernen, können wir unter anderem die Remove-Methode verwenden.

list.Remove("Max")

Falls wir ein Element an einer bestimmten Position – indexbasiert (!) – entfernen wollen, gibt es die RemoveAt-Methode.

list.RemoveAt(0)

Alternativ dazu können wir auch mehrere Objekte durch die RemoveRange-Methode auf einmal entfernen.

Dabei müssen wir als ersten Parameter den jeweiligen Index angeben, an dem wir starten wollen, die Elemente zu entfernen.

Als zweiten Parameter können wir die Anzahl der zu entfernenden Elemente ab der Index-Position angeben.

Dim indexToStartRemoving = 0
Dim itemCountToRemove = 2
list.RemoveRange(indexToStartRemoving, itemCountToRemove)

Downloads

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.