Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Initializers voor verzamelingen bieden een verkorte syntaxis waarmee u een verzameling kunt maken en deze kunt vullen met een initiële set waarden. Initialisatieprogramma's voor verzamelingen zijn handig wanneer u een verzameling maakt op basis van een set bekende waarden, bijvoorbeeld een lijst met menuopties of categorieën, een eerste set numerieke waarden, een statische lijst met tekenreeksen zoals dag- of maandnamen of geografische locaties, zoals een lijst met statussen die wordt gebruikt voor validatie.
Zie Verzamelingen voor meer informatie over verzamelingen.
U identificeert een initialisatiefunctie voor verzamelingen met behulp van het From trefwoord gevolgd door accolades ({}). Dit is vergelijkbaar met de letterlijke syntaxis van de matrix die wordt beschreven in matrices. In de volgende voorbeelden ziet u verschillende manieren om initialisatieprogramma's voor verzamelingen te gebruiken.
' 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"}}
Opmerking
C# biedt ook initialisatiefunctie voor verzamelingen. Initialisatiefuncties voor C#-verzameling bieden dezelfde functionaliteit als initialisatiefuncties voor Visual Basic-verzamelingen. Zie Initializers voor objecten en verzamelingen voor meer informatie over initialisatiefuncties voor C#-verzamelingen.
Syntaxis
Een initialisatiefunctie voor verzamelingen bestaat uit een lijst met door komma's gescheiden waarden die tussen accolades ({}) staan, voorafgegaan door het From trefwoord, zoals wordt weergegeven in de volgende code.
Dim names As New List(Of String) From {"Christa", "Brian", "Tim"}
Wanneer u een verzameling maakt, zoals een List<T> of a Dictionary<TKey,TValue>, moet u het verzamelingstype opgeven vóór de initialisatiefunctie van de verzameling, zoals wordt weergegeven in de volgende code.
Public Class AppMenu
Public Property Items As List(Of String) =
New List(Of String) From {"Home", "About", "Contact"}
End Class
Opmerking
U kunt zowel een initialisatiefunctie voor verzamelingen als een object initialisatiefunctie niet combineren om hetzelfde verzamelingsobject te initialiseren. U kunt object-initialisatiefuncties gebruiken om objecten te initialiseren in een initialisatiefunctie voor verzamelingen.
Een verzameling maken met behulp van een initialisatiefunctie voor verzamelingen
Wanneer u een verzameling maakt met behulp van een initialisatiefunctie voor verzamelingen, wordt elke waarde die in de initialisatiefunctie voor de verzameling wordt opgegeven, doorgegeven aan de juiste Add methode van de verzameling. Als u bijvoorbeeld een List<T> tekenreeks maakt met behulp van een initialisatiefunctie voor verzamelingen, wordt elke tekenreekswaarde in de initialisatiefunctie voor verzamelingen doorgegeven aan de Add methode. Als u een verzameling wilt maken met behulp van een initialisatiefunctie voor verzamelingen, moet het opgegeven type een geldig verzamelingstype zijn. Voorbeelden van geldige verzamelingstypen zijn klassen die de IEnumerable<T> interface implementeren of de CollectionBase klasse overnemen. Het opgegeven type moet ook een Add methode beschikbaar maken die voldoet aan de volgende criteria.
De
Addmethode moet beschikbaar zijn in het bereik waarin de initialisatiefunctie voor verzamelingen wordt aangeroepen. DeAddmethode hoeft niet openbaar te zijn als u de initialisatiefunctie voor verzamelingen gebruikt in een scenario waarin niet-openbare methoden van de verzameling toegankelijk zijn.De
Addmethode moet een instantie- ofSharedlid zijn van de verzameling, of een extensiemethode.Er moet een
Addmethode bestaan die kan worden vergeleken, op basis van de overbelastingsresolutieregels, met de typen die worden opgegeven in de collectie-initialisator.
In het volgende codevoorbeeld ziet u bijvoorbeeld hoe u een List(Of Customer) verzameling maakt met behulp van een initialisatiefunctie voor verzamelingen. Wanneer de code wordt uitgevoerd, wordt elk Customer object doorgegeven aan de Add(Customer) methode van de algemene lijst.
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/")
}
In het volgende codevoorbeeld ziet u equivalente code die geen initialisatiefunctie voor verzamelingen gebruikt.
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/"))
Als de verzameling een Add methode heeft die parameters bevat die overeenkomen met de constructor voor het Customer object, kunt u parameterwaarden nesten voor de Add methode in de initialisatiefuncties van de verzameling, zoals beschreven in de volgende sectie. Als de verzameling geen dergelijke Add methode heeft, kunt u er een maken als een extensiemethode. Voor een voorbeeld van het maken van een Add-methode als een uitbreidingsmethode voor een verzameling, zie Instructies: Een Toevoeg-Uitbreidingsmethode maken die Door een Verzamelinginitializer wordt Gebruikt. Voor een voorbeeld van het maken van een aangepaste verzameling die kan worden gebruikt met een initialisatiefunctie voor verzamelingen, raadpleegt u Het volgende: Een verzameling maken die wordt gebruikt door een initialisatiefunctie voor verzamelingen.
Initialisatiefunctie voor verzameling nesten
U kunt waarden in een verzamelingsinitializer nesten om een specifieke overload van een Add-methode te identificeren voor de verzameling die wordt aangemaakt. De waarden die aan de Add methode worden doorgegeven, moeten worden gescheiden door komma's en tussen accolades ({}), zoals u zou doen in een arrayliteral of verzamelingsinitializer.
Wanneer u een verzameling maakt met behulp van geneste waarden, wordt elk element van de geneste waardenlijst doorgegeven als argument aan de Add methode die overeenkomt met de elementtypen. In het volgende codevoorbeeld wordt bijvoorbeeld een Dictionary<TKey,TValue> code gemaakt waarin de sleutels van het type Integer zijn en de waarden van het type Stringzijn. Elk van de geneste waardenlijsten wordt vergeleken met de Add methode voor de Dictionary.
Dim days = New Dictionary(Of Integer, String) From
{{0, "Sunday"}, {1, "Monday"}}
Het vorige codevoorbeeld is gelijk aan de volgende code.
Dim days = New Dictionary(Of Integer, String)
days.Add(0, "Sunday")
days.Add(1, "Monday")
Alleen geneste waardelijsten van het eerste niveau van nestelen worden doorgegeven aan de Add methode voor het verzamelingstype. Diepere nestniveaus worden behandeld als letterlijke matrixwaarden en de geneste waardenlijsten komen niet overeen met de Add methode van een verzameling.
Verwante onderwerpen
| Titel | Beschrijving |
|---|---|
| Procedure: Een methode voor het toevoegen van extensies maken die wordt gebruikt door een initialisatiefunctie voor verzamelingen | Laat zien hoe u een extensiemethode Add maakt die kan worden gebruikt om een verzameling te vullen met waarden uit een initialisatiefunctie voor verzamelingen. |
| Procedure: Een verzameling maken die wordt gebruikt door een verzamelingsinitialisator | Laat zien hoe u het gebruik van een verzamelingsinitializer inschakelt door een Add-methode op te nemen in een verzamelingsklasse, die IEnumerable implementeert. |
Zie ook
- Verzamelingen
- arrays
- Object Initializers: Benoemde en Anonieme Typen
- Nieuwe operator
- Automatisch geïmplementeerde eigenschappen
- Procedure: Een matrixvariabele initialiseren in Visual Basic
- Deductie van lokaal type
- Anonieme typen
- Inleiding tot LINQ in Visual Basic
- Procedure: Een lijst met items maken