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. Az egyik módja annak, hogy egy Dictionary<TKey,TValue> vagy bármilyen olyan gyűjteményt inicializáljon, amelynek Add metódusa több paramétert igényel, ha az egyes paraméterhalmazokat kapcsos zárójelek közé helyezi, amint az az alábbi példában látható. 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 ismétlődő kulcsok kezelése, például:

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

Add metó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ódrészletben egy Dictionary<TKey,TValue> kerül inicializálásra StudentName típusú példányokkal. Az első inicializálás a metódust Add két argumentummal használja. A fordító generál egy hívást Add számára minden egyes int kulcs és StudentName értékpárhoz. A második az Dictionary osztály nyilvános olvasási/írási indexelő metódusát 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}");
        }
    }
}

Figyelje meg az első deklarációban, hogy a gyűjtemény minden elemében két pár kapcsos zárójel található. A legbelső kapcsos zárójelek az StudentName objektum inicializálóját zárják közre, míg a legkülső kapcsos zárójelek a studentsDictionary<TKey,TValue> kulcs/érték pár inicializálóját zárják közre. Végül a szótár egész kollekció inicializálója kapcsos zárójelek közé van zárva. A második inicializálásnál a hozzárendelés bal oldala a kulcs, a jobb oldala pedig az érték. Az StudentName objektuminicializálót használva történik.

A szótárgyűjtemények tesztelési adatainak létrehozása AI használatával

Az AI-eszközök, például a GitHub Copilot segítségével gyorsan létrehozhat szótártesztelési adatokat és érvényesítési forgatókönyveket a C#-projektekben.

Itt egy példa kérdés, amelyet a Visual Studio Copilot Chatben használhat.

Generate data collections for tests to create a separate Dictionary<int, Student> containing 10 valid Student records and 5 invalid records. 
- Valid records should have realistic Name and Grade values.
- Invalid records should include cases such as missing Name, Grade < 0, or Grade > 100. 
- This dictionary should be used only for testing purposes and not modify existing production code.
- Generate test code that utilizes this test data for validation scenarios.
- Call test method to run the test.

Alkalmazásuk előtt tekintse át a Copilot javaslatait.

A GitHub Copilotról további információt a GitHub GYIK.

Lásd még