Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sammlungsinitialisierer stellen eine verkürzte Syntax bereit, mit der Sie eine Sammlung erstellen und mit einem anfänglichen Wertesatz auffüllen können. Sammlungsinitialisierer sind nützlich, wenn Sie eine Auflistung aus einer Reihe bekannter Werte erstellen, z. B. eine Liste mit Menüoptionen oder Kategorien, eine anfängliche Gruppe numerischer Werte, eine statische Liste von Zeichenfolgen wie Tag- oder Monatsnamen oder geografische Standorte wie eine Liste der Zustände, die für die Überprüfung verwendet werden.
Weitere Informationen zu Sammlungen finden Sie unter Sammlungen.
Sie identifizieren einen Sammlungsinitialisierer mithilfe des From
Schlüsselworts gefolgt von geschweiften Klammern ({}
). Dies ähnelt der Arrayliteralsyntax, die in Arrays beschrieben wird. Die folgenden Beispiele zeigen verschiedene Möglichkeiten, Auflistungsinitialisierer zu verwenden, um Sammlungen zu erstellen.
' Create an array of type String().
Dim winterMonths = {"December", "January", "February"}
' Create an array of type Integer()
Dim numbers = {1, 2, 3, 4, 5}
' Create a list of menu options. (Requires an extension method
' named Add for List(Of MenuOption)
Dim menuOptions = New List(Of MenuOption) From {{1, "Home"},
{2, "Products"},
{3, "News"},
{4, "Contact Us"}}
Hinweis
C# stellt auch Sammlungsinitialisierer bereit. C#-Sammlungsinitialisierer bieten die gleiche Funktionalität wie Visual Basic-Sammlungsinitialisierer. Weitere Informationen zu C#-Auflistungsinitialisierern finden Sie unter Object and Collection Initializers.
Syntax
Ein Sammlungsinitialisierer besteht aus einer Liste von kommagetrennten Werten, die von geschweiften Klammern eingeschlossen sind ({}
) und dem From
Schlüsselwort vorangestellt werden, wie im folgenden Code dargestellt.
Dim names As New List(Of String) From {"Christa", "Brian", "Tim"}
Wenn Sie eine Auflistung erstellen, z. B. ein List<T> oder ein Dictionary<TKey,TValue>, müssen Sie den Sammlungstyp vor dem Sammlungsinitialisierer angeben, wie im folgenden Code gezeigt.
Public Class AppMenu
Public Property Items As List(Of String) =
New List(Of String) From {"Home", "About", "Contact"}
End Class
Hinweis
Sie können sowohl einen Auflistungsinitialisierer als auch einen Objektinitialisierer nicht kombinieren, um dasselbe Auflistungsobjekt zu initialisieren. Sie können Objektinitialisierer verwenden, um Objekte in einem Auflistungsinitialisierer zu initialisieren.
Erstellen einer Auflistung mithilfe eines Sammlungsinitialisierers
Wenn Sie eine Auflistung mithilfe eines Sammlungsinitialisierers erstellen, wird jeder Wert, der im Sammlungsinitialisierer angegeben wird, an die entsprechende Add
Methode der Auflistung übergeben. Wenn Sie z.B. eine List<T> durch Verwendung eines Auflistungsinitialisierers erstellen, wird jeder Zeichenfolgenwert im Auflistungsinitialisierer an die Add-Methode übergeben. Wenn Sie eine Auflistung mithilfe eines Sammlungsinitialisierers erstellen möchten, muss der angegebene Typ gültiger Sammlungstyp sein. Beispiele für gültige Sammlungstypen sind Klassen, die die IEnumerable<T> Schnittstelle implementieren oder die CollectionBase Klasse erben. Der angegebene Typ muss auch eine Add
Methode verfügbar machen, die die folgenden Kriterien erfüllt.
Die
Add
Methode muss im Bereich verfügbar sein, in dem der Sammlungsinitialisierer aufgerufen wird. DieAdd
Methode muss nicht öffentlich sein, wenn Sie den Sammlungsinitialisierer in einem Szenario verwenden, in dem auf nicht öffentliche Methoden der Auflistung zugegriffen werden kann.Die
Add
-Methode muss ein Instanzmember oderShared
-Member der Auflistungsklasse sein oder eine Erweiterungsmethode.Eine
Add
Methode muss vorhanden sein, die basierend auf Überladungsauflösungsregeln mit den Typen übereinstimmen kann, die im Sammlungsinitialisierer bereitgestellt werden.
Im folgenden Codebeispiel wird z. B. veranschaulicht, wie eine List(Of Customer)
Auflistung mithilfe eines Sammlungsinitialisierers erstellt wird. Wenn der Code ausgeführt wird, wird jedes Customer
Objekt an die Add(Customer)
Methode der generischen Liste übergeben.
Dim customers = New List(Of Customer) From
{
New Customer("City Power & Light", "http://www.cpandl.com/"),
New Customer("Wide World Importers", "http://www.wideworldimporters.com/"),
New Customer("Lucerne Publishing", "http://www.lucernepublishing.com/")
}
Das folgende Codebeispiel zeigt einen entsprechenden Code, der keinen Sammlungsinitialisierer verwendet.
Dim customers = New List(Of Customer)
customers.Add(New Customer("City Power & Light", "http://www.cpandl.com/"))
customers.Add(New Customer("Wide World Importers", "http://www.wideworldimporters.com/"))
customers.Add(New Customer("Lucerne Publishing", "http://www.lucernepublishing.com/"))
Wenn die Auflistung über eine Add
Methode verfügt, die Parameter enthält, die dem Konstruktor für das Customer
Objekt entsprechen, können Sie Parameterwerte für die Add
Methode innerhalb von Sammlungsinitialisierern verschachteln, wie im nächsten Abschnitt beschrieben. Wenn die Sammlung keine solche Add
Methode aufweist, können Sie eine als Erweiterungsmethode erstellen. Ein Beispiel zum Erstellen einer Add
Methode als Erweiterungsmethode für eine Auflistung finden Sie unter So erstellen Sie eine Hinzufügenerweiterungsmethode, die von einem Sammlungsinitialisierer verwendet wird. Ein Beispiel zum Erstellen einer benutzerdefinierten Auflistung, die mit einem Sammlungsinitialisierer verwendet werden kann, finden Sie unter How to: Create a Collection Used by a Collection Initializer.
Schachteln von Auflistungsinitialisierern
Sie können Werte in einem Sammlungsinitialisierer verschachteln, um eine bestimmte Überladung einer Add
Methode für die erstellte Auflistung zu identifizieren. Die Werte, die an die Add
-Methode übergeben werden, müssen durch Kommas getrennt und in Klammern ({}
) eingeschlossen werden, so wie Sie das auch in einem Arrayliteral oder Auflistungsinitialisierer tun würden.
Wenn Sie eine Auflistung mithilfe geschachtelter Werte erstellen, wird jedes Element der geschachtelten Wertliste als Argument an die Add
Methode übergeben, die den Elementtypen entspricht. **
Im folgenden Codebeispiel wird ein Dictionary<TKey,TValue> erstellt, in dem die Schlüssel vom Typ Integer
sind und die Werte vom Typ String
. Jede der verschachtelten Wertlisten wird der Add-Methode für Dictionary
zugeordnet.
Dim days = New Dictionary(Of Integer, String) From
{{0, "Sunday"}, {1, "Monday"}}
Das vorherige Codebeispiel entspricht dem folgenden Code.
Dim days = New Dictionary(Of Integer, String)
days.Add(0, "Sunday")
days.Add(1, "Monday")
Es werden ausschließlich geschachtelte Wertelisten aus der ersten Schachtelungsebene an die Add
-Methode für den Auflistungstyp gesendet. Tiefere Ebenen der Verschachtelung werden als Array-Literale behandelt, und die verschachtelten Wertlisten werden nicht der Add
Methode einer Auflistung zugeordnet.
Verwandte Themen
Titel | BESCHREIBUNG |
---|---|
Vorgehensweise: Erstellen einer Add-Erweiterungsmethode für einen Auflistungsinitialisierer | Zeigt, wie eine Erweiterungsmethode namens Add erstellt wird, die zum Auffüllen einer Auflistung mit Werten von einem Auflistungsinitialisierer verwendet werden kann. |
So erstellen Sie eine Sammlung, die von einem Sammlungsinitialisierer verwendet wird | Zeigt, wie Sie die Verwendung eines Sammlungs-Initialisierers ermöglichen, indem Sie eine Methode in eine Auflistungsklasse Add einschließen, die IEnumerable implementiert. |
Siehe auch
- Sammlungen
- Felder
- Objektinitialisierer: Benannte und anonyme Typen
- Neuer Operator
- Automatisch implementierte Eigenschaften
- Anleitung: Initialisieren einer Arrayvariablen in Visual Basic
- Lokaler Typrückschluss
- Anonyme Typen
- Einführung in LINQ in Visual Basic
- Anleitung: Eine Liste von Artikeln erstellen