Gyűjtemény inicializálói (Visual Basic)
A gyűjtemény inicializálói egy rövidített szintaxist biztosítanak, amellyel létrehozhat egy gyűjteményt, és feltöltheti egy kezdeti értékkészlettel. A gyűjtemény inicializálói akkor hasznosak, ha egy gyűjteményt ismert értékekből hoz létre, például menübeállítások vagy kategóriák listájából, numerikus értékek kezdeti készletéből, sztringek statikus listájából, például nap- vagy hónapnevekből vagy földrajzi helyekből, például az ellenőrzéshez használt állapotok listájából.
A gyűjteményekről további információt a Gyűjtemények című témakörben talál.
A gyűjtemény inicializálóját a kulcsszó, majd a From
kapcsos zárójelek ({}
) használatával azonosíthatja. Ez hasonló a Tömbökben leírt tömbkonstansszintaxishoz. Az alábbi példák azt mutatják be, hogyan lehet gyűjtemény inicializálókat használni gyűjtemények létrehozásához.
' 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"}}
Megjegyzés
A C# gyűjtemény inicializálókat is biztosít. A C#-gyűjtemény inicializálói ugyanazokat a funkciókat biztosítják, mint Visual Basic gyűjtemény inicializálói. További információ a C#-gyűjtemény inicializálóiról: Objektum- és gyűjtemény-inicializálók.
Syntax
A gyűjtemény inicializálója vesszővel{}
elválasztott értékek listáját tartalmazza, amelyeket a From
kulcsszó előz meg, az alábbi kódban látható módon.
Dim names As New List(Of String) From {"Christa", "Brian", "Tim"}
Gyűjtemény (például a List<T> vagy a Dictionary<TKey,TValue>) létrehozásakor meg kell adnia a gyűjtemény típusát a gyűjtemény inicializálója előtt, az alábbi kódban látható módon.
Public Class AppMenu
Public Property Items As List(Of String) =
New List(Of String) From {"Home", "About", "Contact"}
End Class
Megjegyzés
A gyűjtemény inicializálóját és az objektum inicializálóját nem kombinálhatja ugyanazon gyűjteményobjektum inicializálásához. Az objektum-inicializálókkal inicializálhat objektumokat egy gyűjtemény inicializálójában.
Gyűjtemény létrehozása gyűjtemény inicializáló használatával
Ha gyűjtemény inicializálóval hoz létre gyűjteményt, a gyűjtemény inicializálójában megadott összes érték a gyűjtemény megfelelő Add
metódusának lesz átadva. Ha például gyűjtemény inicializálóval hoz létre egy List<T> értéket, a rendszer a gyűjtemény inicializálójának minden sztringértékét átadja a Add metódusnak. Ha gyűjteményt szeretne létrehozni gyűjtemény inicializálóval, a megadott típusnak érvényes gyűjteménytípusnak kell lennie. Érvényes gyűjteménytípusok például olyan osztályok, amelyek implementálják az interfészt IEnumerable<T> , vagy öröklik az osztályt CollectionBase . A megadott típusnak olyan metódust Add
is közzé kell tennie, amely megfelel az alábbi feltételeknek.
A
Add
metódusnak elérhetőnek kell lennie abból a hatókörből, amelyben a gyűjtemény inicializálóját meghívják. AAdd
metódusnak nem kell nyilvánosnak lennie, ha a gyűjtemény inicializálóját olyan forgatókönyvben használja, amelyben a gyűjtemény nem nyilvános metódusai elérhetők.A
Add
metódusnak a gyűjteményosztály példányának vagyShared
tagjának vagy bővítménymetódusának kell lennie.Léteznie kell egy
Add
metódusnak, amely a túlterhelésfeloldási szabályok alapján megfeleltethető a gyűjtemény inicializálójában megadott típusnak.
Az alábbi példakód például bemutatja, hogyan hozhat létre gyűjteményt List(Of Customer)
gyűjtemény inicializáló használatával. A kód futtatásakor a rendszer minden Customer
objektumot átad az Add(Customer)
általános lista metódusának.
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/")
}
Az alábbi példakód olyan egyenértékű kódot mutat be, amely nem használ gyűjtemény inicializálót.
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/"))
Ha a gyűjtemény olyan metódust használ, amely az objektum konstruktorának Customer
megfelelő paraméterekkel rendelkezikAdd
, a metódus paraméterértékeit beágyazhatja a Add
gyűjtemény inicializálóiba, a következő szakaszban leírtak szerint. Ha a gyűjtemény nem rendelkezik ilyen Add
módszerrel, bővítménymetódusként is létrehozhat egyet. Ha egy gyűjtemény bővítménymetódusaként szeretne létrehozni egy Add
metódust, olvassa el a How to: Create an Add Extension Method Used by a Collection Initializer (Gyűjtemény inicializálója által használt bővítmény hozzáadása) című témakört. Ha egy gyűjtemény inicializálójával használható egyéni gyűjteményt szeretne létrehozni, olvassa el a How to: Create a Collection Initializer (Gyűjtemény inicializálója által használt gyűjtemény létrehozása) című témakört.
Gyűjtemény inicializálóinak beágyazása
Értékeket ágyazhat be egy gyűjtemény inicializálóba, hogy azonosítsa a létrehozott gyűjtemény metódusának Add
egy adott túlterhelését. A metódusnak Add
átadott értékeket vesszővel kell elválasztani, és kapcsos{}
zárójelek () közé kell tenni, ahogyan egy tömbkonstansban vagy gyűjtemény inicializálójában tenné.
Ha beágyazott értékekkel hoz létre gyűjteményt, a beágyazott értéklista minden eleme argumentumként lesz átadva az Add
elemtípusoknak megfelelő metódusnak. Az alábbi példakód például létrehoz egy Dictionary<TKey,TValue> olyan kulcsot, amelyben a kulcsok típusa Integer
és az értékek típusa String
. A beágyazott értéklisták mindegyike megegyezik a AddDictionary
.
Dim days = New Dictionary(Of Integer, String) From
{{0, "Sunday"}, {1, "Monday"}}
Az előző példakód az alábbi kódnak felel meg.
Dim days = New Dictionary(Of Integer, String)
days.Add(0, "Sunday")
days.Add(1, "Monday")
A rendszer csak a beágyazás első szintjéről származó beágyazott értéklistákat küldi el a Add
gyűjteménytípus metódusának. A beágyazás mélyebb szintjei tömbkonstansokként vannak kezelve, és a beágyazott értéklisták nem egyeznek meg egyetlen Add
gyűjtemény módszerével sem.
Kapcsolódó témakörök
Cím | Leírás |
---|---|
Útmutató: Bővítmény hozzáadása metódus létrehozása gyűjtemény inicializálója által | Bemutatja, hogyan hozhat létre egy olyan bővítménymetódust Add , amellyel feltölthető egy gyűjtemény egy gyűjtemény inicializálójától származó értékekkel. |
Útmutató: Gyűjtemény inicializáló által használt gyűjtemény létrehozása | Bemutatja, hogyan engedélyezheti a gyűjtemény inicializálójának használatát úgy, hogy belevesz egy metódust egy Add implementáló IEnumerable gyűjteményosztályba. |
Lásd még
- Gyűjtemények
- Tömbök
- Objektum-inicializálók: Névvel ellátott és névtelen típusok
- Új operátor
- Automatikusan implementált tulajdonságok
- Útmutató: Tömbváltozó inicializálása Visual Basic
- Helyi típusú következtetés
- Névtelen típusok
- Bevezetés a LINQ használatába a Visual Basic
- Útmutató: Elemek listájának létrehozása
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: