Collection-Objekt (Visual Basic)
Aktualisiert: November 2007
Ein Collection-Objekt von Visual Basic ist ein geordneter Satz aus Elementen, auf den als Einheit verwiesen werden kann.
Hinweise
Mit einem Collection-Objekt von Visual Basic lässt sich eine zusammenhängende Gruppe von Elementen bequem in Form eines einzelnen Objekts anzeigen. Dabei genügt es, wenn die einzige Gemeinsamkeit der Elemente darin besteht, dass sie sich in der Auflistung befinden. Elemente einer Auflistung müssen nicht den gleichen Datentyp haben.
Wie das folgende Beispiel zeigt, erstellen Sie eine Auflistung auf die gleiche Weise wie andere Objekte.
Dim coll As New Microsoft.VisualBasic.Collection()
Sobald Sie eine Auflistung erstellt haben, haben Sie folgende Möglichkeiten:
Fügen Sie ein Element mit der Add-Methode hinzu.
Entfernen Sie ein Element, dass die Remove-Methode verwendet.
Entfernen Sie alle Elemente, von denen Clear-Methode verwendet wird.
Stellen Sie mit der Count-Eigenschaft fest, wie viele Elemente die Auflistung enthält.
Überprüfen Sie mit der Contains-Methode, ob ein bestimmtes Element vorhanden ist.
Geben Sie mit der Item-Eigenschaft ein bestimmtes Element der Auflistung zurück.
Durchlaufen Sie die ganze Auflistung mit For Each...Next-Anweisung (Visual Basic).
Hinweis: Obwohl die Funktion des Collection-Objekts in Visual Basic und Visual Basic 6.0 identisch ist, ist eine Interoperation in einer COM-Umgebung nicht möglich.
Vorsicht: Das Durchlaufen einer Visual Basic-Collection ist keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert ist, können andere Threads die Auflistung ändern. Dies löst eine Ausnahme im Enumerator aus. Um Threadsicherheit während der Enumeration zu gewährleisten, sperren Sie entweder die Auflistung oder fangen die Ausnahmen auf, die aus Änderungen durch andere Threads resultieren. Weitere Informationen über das Sperren eines Programmierelements finden Sie unter SyncLock-Anweisung.
Beispiel
Im folgenden Beispiel werden das Collection-Objekt names und ein Dialogfeld erstellt, in dem ein Benutzer Objekte (Namen) zu der Auflistung hinzufügen kann. Danach werden die Namen in der Auflistung angezeigt, und die Auflistung wird schließlich geleert, ohne das Collection-Objekt selbst zu löschen.
Die Funktionsweise dieses Beispiels testen Sie folgendermaßen: Wählen Sie im Menü Projekt den Befehl Klasse hinzufügen aus, und deklarieren Sie die öffentliche Variable instanceName auf der Modulebene von nameClass, in der die Namen der einzelnen Instanzen gespeichert werden. Geben Sie dazu Public instanceName ein. Behalten Sie den Standardnamen nameClass. Kopieren Sie den folgenden Code, fügen Sie ihn in den Abschnitt Allgemein eines anderen Moduls ein, und starten Sie ihn anschließend mit der classNamer-Anweisung in einer anderen Prozedur. (Dieses Beispiel lässt sich nur mit Hostanwendungen durchführen, die Klassen unterstützen.)
Public Class nameClass
Public instanceName As String
End Class
Sub classNamer()
' Create a Visual Basic Collection object.
Dim names As New Microsoft.VisualBasic.Collection()
Dim key As Integer
Dim msg As String
Dim name As String
Dim nameList As String = ""
' 1. Get names from the user to add to the collection.
Do
Dim inst As New nameClass()
key += 1
msg = "Please enter a name for this object." & vbCrLf _
& "Press Cancel to see names in collection."
name = InputBox(msg, "Name the Collection items")
inst.instanceName = name
' If user entered a name, add it to the collection.
If inst.instanceName <> "" Then
names.Add(inst, CStr(key))
End If
Loop Until name = ""
' 2. Create and display a list of names from the collection.
For Each oneInst As nameClass In names
nameList &= oneInst.instanceName & vbCrLf
Next oneInst
MsgBox(nameList, , "Instance Names in names Collection")
' 3. Remove elements from the collection without disposing of the collection.
For count As Integer = 1 To names.Count
names.Remove(1)
' Since Visual Basic collections are reindexed automatically,
' remove the first member on each iteration.
Next count
End Sub
Voraussetzungen
Namespace:Microsoft.VisualBasic
**Assembly:**Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)