Historie der Frage
Die Sammlung List(Of T) wurde in VB.NET eingeführt, um veraltete Sammlungen zu ersetzen, indem sie Typensicherheit, dynamische Größenanpassung und schnellen Zugriff auf Elemente über den Index bietet. Die Verwendung von Listen ermöglicht es, Daten zu strukturieren, mit typisierten Elementen zu arbeiten und häufige Fehler im Zusammenhang mit nicht-generischen Sammlungen zu vermeiden.
Problem
Anfänger verstehen oft nicht, wie man korrekt auf Elemente einer Liste zugreift, wie man Elemente hinzufügt, ändert und entfernt, und was passiert, wenn Indizes falsch verwendet werden (z. B. außerhalb der Liste). Dies führt zu Ausnahmen während der Programmausführung.
Lösung
In List(Of T) sind Elemente nullbasiert indiziert. Der Zugriff auf ein Element erfolgt über den Index sowohl zum Lesen als auch zum Schreiben. Wenn der Index ungültig ist, wird eine Ausnahme ArgumentOutOfRangeException ausgelöst. Die Methoden der Sammlung ermöglichen ein sicheres Arbeiten mit Elementen:
Beispielcode:
Imports System.Collections.Generic Dim numbers As New List(Of Integer)() numbers.Add(10) numbers.Add(20) Dim first As Integer = numbers(0) ' Zugriff auf Element mit Index 0 numbers(1) = 99 ' Setzt Element mit Index 1 ' Entfernen numbers.RemoveAt(0) ' Entfernen über Index
Wesentliche Merkmale:
Wenn wir auf einen Index zugreifen, der gleich der Anzahl der Elemente in List(Of T) ist, erhalten wir dann das letzte Element?
Nein. Die Indizierung beginnt bei 0, und der maximal zulässige Index ist (Count - 1). Bei Zugriff über den Index, der Count entspricht, wird eine ArgumentOutOfRangeException ausgelöst.
Kann man ein Element in die Mitte von List(Of T) einfügen, ohne bestehende Daten zu löschen?
Ja, mit der Insert-Methode:
numbers.Insert(1, 42) ' Fügt 42 an zweiter Stelle ein und schiebt die anderen nach rechts.
Ist es gefährlich, eine Sammlung List(Of T) während der Iteration mit For Each zu ändern?
Ja, das ist gefährlich. Dies führt zu einer InvalidOperationException. Für solche Operationen verwenden Sie For mit einem Index oder erstellen Sie zuerst eine Liste zum Entfernen.
In dem Programm wird List(Of T) mit For Each durchlaufen und innerhalb der Iteration werden Elemente entfernt.
Vorteile:
Nachteile:
Der Code durchläuft die Elemente von Ende nach Anfang mit For und entfernt passende Objekte.
Vorteile:
Nachteile: