Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
A Dictionary<TKey,TValue> obsahuje kolekci párů klíč/hodnota. Jeho Add metoda přebírá dva parametry, jeden pro klíč a jeden pro hodnotu. Jedním ze způsobů, jak inicializovat , nebo jakoukoli kolekci Dictionary<TKey,TValue>, jejíž Add
metoda přebírá více parametrů, je uzavřít každou sadu parametrů do složených závorek, jak je znázorněno v následujícím příkladu. Další možností je použít inicializátor indexu, který je znázorněn také v následujícím příkladu.
Poznámka:
Hlavním rozdílem mezi těmito dvěma způsoby inicializace kolekce je způsob zpracování duplicitních klíčů, například:
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
Add metoda vyvolá ArgumentException: 'An item with the same key has already been added. Key: 111'
, zatímco druhá část příkladu, veřejná metoda indexeru pro čtení a zápis, tiše přepíše již existující položku stejným klíčem.
Spropitné
Pomocí pomoci s AI můžete inicializovat slovník.
Příklad
V následujícím příkladu kódu je Dictionary<TKey,TValue> inicializován s instancemi typu StudentName
. První inicializace používá metodu Add
se dvěma argumenty. Kompilátor vygeneruje volání Add
pro každou dvojici int
klíčů a StudentName
hodnot. Druhý používá veřejnou metodu indexeru pro čtení a zápis třídy Dictionary
.
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}");
}
}
}
Všimněte si dvou dvojic složených závorek v každém prvku kolekce v první deklaraci. Vnitřní složené závorky ohraničují inicializátor pro StudentName
, zatímco vnější složené závorky ohraničují inicializátor pro pár klíč/hodnota, který se má přidat do students
Dictionary<TKey,TValue>. Nakonec se celý inicializátor kolekce pro slovník uzavře do složených závorek. V druhé inicializaci je levá strana přiřazení klíč a pravá strana je hodnota pomocí inicializátoru objektu pro StudentName
.
Inicializace slovníku pomocí AI
Pomocí nástrojů AI, jako je GitHub Copilot, můžete vygenerovat kód jazyka C#, který inicializuje slovník pomocí inicializátoru kolekce. Výzvu můžete přizpůsobit tak, aby se podle vašich požadavků přidaly konkrétní údaje.
Následující text ukazuje příklad výzvy pro Copilot Chat:
Generate C# code to initialize Dictionary<int, Employee> using key-value pairs within the collection initializer. The employee class is a record class with two properties: Name and Age.
GitHub Copilot využívá technologii AI, takže jsou možná překvapení a chyby. Další informace najdete v nejčastějších dotazech ke copilotu.