Sdílet prostřednictvím


Inicializátory kolekcí (Visual Basic)

Inicializátory kolekcí poskytují zkrácenou syntaxi, která umožňuje vytvořit kolekci a naplnit jí počáteční sadou hodnot.Inicializátory kolekce jsou užitečné při vytváření kolekce ze sady známé hodnoty, například seznam možností nabídky nebo kategorií, počáteční sadu číselné hodnoty, statický seznam řetězců jako den nebo měsíc názvy nebo geografické polohy, jako je například seznam států, používané pro ověření.

Další informace o kolekcích naleznete Kolekce (C# and Visual Basic).

Identifikovat inicializátoru kolekce pomocí From klíčové slovo následované závorkami ({}).Je to podobné jako syntaxe literálu array, která je popsána v Pole v jazyce Visual Basic.Následující příklady znázorňují různé způsoby vytvoření kolekce pomocí kolekce Inicializátory.

' 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"}}

[!POZNÁMKA]

C# obsahuje také kolekce Inicializátory.C# kolekce Inicializátory poskytnout stejné funkce jako Inicializátory kolekce jazyka Visual Basic.Další informace o kolekci Inicializátory C#, viz Inicializátory objektu a kolekce (Průvodce programováním v C#).

Syntaxe

Inicializátor kolekce obsahuje seznam hodnot oddělených čárkami, které jsou uzavřeny ve složených závorkách ({}), předcházet From klíčové slovo, jak je znázorněno v následujícím kódu.

Dim names As New List(Of String) From {"Christa", "Brian", "Tim"}

Při vytváření kolekce, například List nebo Dictionary, jak je znázorněno v následujícím kódu je nutné zadat typ kolekce před inicializátor kolekce.

Public Class AppMenu
    Public Property Items As List(Of String) =
        New List(Of String) From {"Home", "About", "Contact"}
End Class

[!POZNÁMKA]

Inicializátor kolekce i inicializátor objekt inicializovat objekt stejné kolekce nelze kombinovat.Inicializátory objektů můžete inicializovat objektů v kolekci inicializátor.

Vytváření kolekce pomocí kolekce iniciátora

Při vytvoření kolekce pomocí kolekce inicializátor každý dodaný inicializátor kolekce je předána hodnota odpovídající Add metoda kolekce.Vytvoříte-li například List pomocí kolekce inicializátor každou hodnotu řetězec v kolekci inicializátor předány Add metoda.Pokud chcete vytvořit kolekci pomocí kolekce inicializátor, určený typ musí být typu kolekce platné.Typy kolekcí platné příklady třídy, které implementují IEnumerable rozhraní nebo dědí CollectionBase třídy.Zadaný typ musí také vystavit Add metoda, která splňuje následující kritéria.

  • Add Metoda musí být k dispozici z oboru, ve kterém se nazývá kolekce inicializátor.Add Metoda nemusí být veřejné, pokud používáte inicializátor kolekce v případě kde neveřejné kolekce jsou přístupné.

  • Add Metoda musí být instanci člena nebo Shared členem kolekce třídy nebo metody rozšíření.

  • Add Musí existovat způsob, mohou odpovídat, na základě pravidla řešení přetížení, typů, které jsou dodávány v kolekci inicializátor.

Například následující příklad kódu ukazuje, jak vytvořit List(Of Customer) kolekce pomocí kolekce inicializátor.Při kód spuštění, každý Customer je předán objektu Add(Customer) metoda obecný seznam.

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/")
    }

Následující příklad kódu ukazuje ekvivalentní kód, který nepoužívá inicializátoru kolekce.

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/"))

Pokud má kolekce Add metoda, která má parametry odpovídající konstruktor pro Customer objektu nelze vnořit hodnoty parametrů pro Add metodu shromažďování Inicializátory, jak je popsáno v následující části.Pokud například nemá kolekce Add metodu, můžete ji vytvořit jako metoda rozšíření.Příklad vytvoření Add metoda jako metoda pro odběr, rozšíření, viz Postupy: Vytvoření metody přidání rozšíření používané inicializátorem kolekce (Visual Basic).Příklad vytvoření vlastní kolekce, který slouží shromažďování inicializátor, viz Postupy: Vytvoření kolekce používané inicializátorem kolekce (Visual Basic).

Inicializátory kolekce vnoření

Hodnoty uvnitř inicializátoru kolekce identifikovat konkrétní přetížení můžete vnořit Add metoda pro kolekci, která je vytvářena.Hodnoty předané Add metody musí být odděleny čárkami a uzavřeny ve složených závorkách ({}), jako by to v inicializátor pole literálu nebo kolekce.

Při vytvoření kolekce pomocí vnořených hodnot jednotlivých prvků vnořených hodnot seznamu je předán jako argument Add metoda, která odpovídá typy prvků.Například následující kód například vytvoří Dictionary ve kterém klíče jsou typu Integer a hodnoty jsou typu String.Každá hodnota vnořených seznamů je odpovídat Add metodu Dictionary.

Dim days = New Dictionary(Of Integer, String) From
    {{0, "Sunday"}, {1, "Monday"}}

Předchozí příklad kódu je ekvivalentní následující kód.

Dim days = New Dictionary(Of Integer, String)
days.Add(0, "Sunday")
days.Add(1, "Monday")

Jsou odesílány pouze hodnota vnořené seznamy z první úrovně vnoření Add metody pro typ kolekce.Hlubší úrovní vnoření jsou interpretovány jako literály array a hodnota vnořených seznamů jsou neodpovídá Add metoda žádné kolekce.

Příbuzná témata

Title

Description

Postupy: Vytvoření metody přidání rozšíření používané inicializátorem kolekce (Visual Basic)

Ukazuje, jak vytvořit metodu rozšíření nazývá Add lze použít k naplnění kolekce s hodnoty z kolekce inicializátor.

Postupy: Vytvoření kolekce používané inicializátorem kolekce (Visual Basic)

Ukazuje, jak lze povolit použití kolekce inicializátor včetně Add v kolekci třídy, která implementuje metody IEnumerable.

Viz také

Úkoly

Postupy: Inicializace proměnné pole v jazyce Visual Basic

Postupy: Vytvoření seznamu položek

Referenční dokumentace

New – operátor (Visual Basic)

Koncepty

Inicializátory objektů: pojmenované a anonymní typy (Visual Basic)

Automaticky implementované vlastnosti (Visual Basic)

Odvození místního typu (Visual Basic)

Anonymní typy (Visual Basic)

Představení technologie LINQ v jazyce Visual Basic

Další zdroje

Kolekce (C# and Visual Basic)

Pole v jazyce Visual Basic