Auflistungen als Alternative zu Arrays
Aktualisiert: November 2007
Obwohl Auflistungen am häufigsten für die Arbeit mit dem Object-Datentyp verwendet werden, können sie auch für die Arbeit mit jedem beliebigen Datentyp eingesetzt werden. In einigen Situationen kann es effektiver sein, Elemente nicht in einem Array, sondern in einer Auflistung zu speichern.
Wenn Sie die Größe eines Arrays ändern müssen, müssen Sie die ReDim-Anweisung (Visual Basic) verwenden. Dabei erstellt Visual Basic ein neues Array und gibt das vorherige Array zum Löschen frei. Dies nimmt Ausführungszeit in Anspruch. Wenn sich die Anzahl der verwendeten Elemente häufig ändert oder Sie die maximale Anzahl der benötigten Elemente nicht vorhersehen können, erzielen Sie mit einer Auflistung möglicherweise eine höhere Leistung.
Eine Auflistung muss kein neues Objekt erstellen oder bestehende Elemente kopieren. Dadurch können Größenänderungen in kürzerer Zeit ausgeführt werden als bei einem Array, das ReDim verwenden muss. Wenn sich die Größe aber nicht oder nur selten ändert, sind Arrays wahrscheinlich effizienter. Die Leistung ist wie immer stark von der einzelnen Anwendung abhängig. Oft lohnt es sich, sowohl ein Array als auch eine Auflistung auszuprobieren.
Spezialisierte Auflistungen
.NET Framework bietet auch eine Reihe von Klassen, Schnittstellen und Strukturen für allgemeine und spezielle Auflistungen. Der System.Collections-Namespace und der System.Collections.Specialized-Namespace enthalten Definitionen und Implementierungen mit Dictionarys, Listen, Warteschlangen und Stapeln. Der System.Collections.Generic-Namespace stellt viele dieser Elemente als generische Versionen bereit, die mindestens ein Typargument akzeptieren.
Wenn die Auflistung nur Elemente eines bestimmten Datentyps enthalten soll, ist eine generische Auflistung von Vorteil, da sich damit Typsicherheit erzwingen lässt. Weitere Informationen zu Generika finden Sie unter Generische Typen in Visual Basic.
Beispiel
Beschreibung
Im folgenden Beispiel wird mit der generischen .NET Framework-Klasse System.Collections.Generic.List<T> eine Listenauflistung mit customer-Strukturen erstellt.
Code
' Define the structure for a customer.
Public Structure customer
Public name As String
' Insert code for other members of customer structure.
End Structure
' Create a module-level collection that can hold 200 elements.
Public custFile As New List(Of customer)(200)
' Add a specified customer to the collection.
Private Sub addNewCustomer(ByVal newCust As customer)
' Insert code to perform validity check on newCust.
custFile.Add(newCust)
End Sub
' Display the list of customers in the Debug window.
Private Sub printCustomers()
For Each cust As customer In custFile
Debug.WriteLine(cust)
Next cust
End Sub
Kommentare
Die Deklaration der custFile-Auflistung gibt an, dass sie nur Elemente vom Typ customer enthalten kann. Sie bietet außerdem eine Anfangskapazität von 200 Elementen. Die Prozedur addNewCustomer überprüft das neue Element auf seine Gültigkeit und fügt es dann der Auflistung hinzu. Die Prozedur printCustomers verwendet zum Traversieren der Auflistung und zum Anzeigen ihrer Elemente eine For Each-Schleife.
Siehe auch
Aufgaben
Gewusst wie: Deklarieren einer Arrayvariablen
Gewusst wie: Erstellen eines Arrays
Gewusst wie: Initialisieren einer Arrayvariablen
Konzepte
Generische Typen in Visual Basic
Referenz
ReDim-Anweisung (Visual Basic)