Megosztás a következőn keresztül:


Szótár inicializálása gyűjtemény inicializálóval (C# programozási útmutató)

Az A Dictionary<TKey,TValue> kulcs/érték párok gyűjteményét tartalmazza. A Add metódus két paramétert használ, egyet a kulcshoz, egyet az értékhez. Egy vagy több paramétert felhasználó gyűjtemény Add inicializálásának Dictionary<TKey,TValue>egyik módja, ha az egyes paramétereket kapcsos zárójelek közé helyezi az alábbi példában látható módon. Egy másik lehetőség az index inicializáló használata, amely az alábbi példában is látható.

Feljegyzés

A gyűjtemény inicializálásának két módja között a fő különbség az, hogy duplikált kulcsok esetén, például:

{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } }, 

Addmetódus: ArgumentException'An item with the same key has already been added. Key: 111'míg a példa második része, a nyilvános olvasási/írási indexelő metódus csendben felülírja a már meglévő bejegyzést ugyanazzal a kulccsal.

Példa

A következő kód példában a rendszer inicializálja Dictionary<TKey,TValue> a típuspéldányokat StudentName. Az első inicializálás a metódust Add két argumentummal használja. A fordító meghívja Add a kulcsok és StudentName értékek párjaitint. A második az osztály nyilvános olvasási/írási indexelő metódusát Dictionary használja:

public class HowToDictionaryInitializer
{
    class StudentName
    {
        public string? FirstName { get; set; }
        public string? LastName { get; set; }
        public int ID { get; set; }
    }

    public static void Main()
    {
        var students = new Dictionary<int, StudentName>()
        {
            { 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
            { 112, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
            { 113, new StudentName { FirstName="Andy", LastName="Ruth", ID=198 } }
        };

        foreach(var index in Enumerable.Range(111, 3))
        {
            Console.WriteLine($"Student {index} is {students[index].FirstName} {students[index].LastName}");
        }
        Console.WriteLine();		

        var students2 = new Dictionary<int, StudentName>()
        {
            [111] = new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 },
            [112] = new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } ,
            [113] = new StudentName { FirstName="Andy", LastName="Ruth", ID=198 }
        };

        foreach (var index in Enumerable.Range(111, 3))
        {
            Console.WriteLine($"Student {index} is {students2[index].FirstName} {students2[index].LastName}");
        }
    }
}

Jegyezze fel az első deklarációban a gyűjtemény minden elemében található két kapcsos zárójelet. A legbelső kapcsos zárójelek az objektum inicializálóját StudentName, a legkülső kapcsos zárójelek pedig a kulcs/érték pár inicializálóját csatolják a students Dictionary<TKey,TValue>. Végül a szótár teljes gyűjtemény inicializálója kapcsos zárójelek közé kerül. A második inicializálásban a hozzárendelés bal oldala a kulcs, a jobb oldalon pedig az érték, amely egy objektum inicializálóját használja a következőhöz StudentName: .

Lásd még