Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
A Dictionary<TKey,TValue> bevat een verzameling sleutel-/waardeparen. De Add methode gebruikt twee parameters, één voor de sleutel en één voor de waarde. Een manier om een Dictionary<TKey,TValue>, of een verzameling waarvan Add
de methode meerdere parameters gebruikt, te initialiseren, is door elke set parameters tussen accolades te plaatsen, zoals wordt weergegeven in het volgende voorbeeld. Een andere optie is het gebruik van een index-initialisatiefunctie, ook weergegeven in het volgende voorbeeld.
Notitie
Het belangrijkste verschil tussen deze twee manieren om de verzameling te initialiseren is hoe dubbele sleutels worden verwerkt, bijvoorbeeld:
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
Add methode gooit ArgumentException: 'An item with the same key has already been added. Key: 111'
, terwijl het tweede deel van het voorbeeld, de openbare indexeermethode voor lezen/schrijven, stilletjes de reeds bestaande vermelding met dezelfde sleutel overschrijft.
Aanbeveling
U kunt AI-hulp gebruiken om een woordenlijst te initialiseren.
Voorbeeld
In het volgende codevoorbeeld wordt een Dictionary<TKey,TValue> geïnitialiseerd met exemplaren van het type StudentName
. De eerste initialisatie maakt gebruik van de Add
methode met twee argumenten. De compiler genereert voor elk van de paren van Add
sleutels en int
waarden een aanroep naar StudentName
. De tweede maakt gebruik van een openbare indexeermethode voor lezen/schrijven van de Dictionary
klasse:
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}");
}
}
}
Let op de twee accolades in elk element van de verzameling in de eerste declaratie. De binnenste accolades omsluiten de object-initialisator voor de StudentName
, en de buitenste accolades bevatten de initialisator voor het sleutel/waardepaar dat aan students
Dictionary<TKey,TValue> moet worden toegevoegd. Ten slotte wordt de gehele initialisatie van de verzameling voor het woordenboek tussen accolades geplaatst. Bij de tweede initialisatie is de linkerkant van de toewijzing de sleutel en de rechterkant de waarde, met behulp van een object-initializer voor StudentName
.
AI gebruiken om een woordenlijst te initialiseren
U kunt AI-hulpprogramma's, zoals GitHub Copilot, gebruiken om C#-code te genereren om een woordenlijst te initialiseren met een initialisatiefunctie voor verzamelingen. U kunt de prompt aanpassen om specifieke gegevens toe te voegen aan uw vereisten.
In de volgende tekst ziet u een voorbeeldprompt voor 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 wordt mogelijk gemaakt door AI, dus verrassingen en fouten zijn mogelijk. Zie Veelgestelde vragen over Copilotvoor meer informatie.