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.
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 studentsDictionary<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 testgegevens te genereren voor woordenlijstverzamelingen
U kunt AI-hulpprogramma's, zoals GitHub Copilot, gebruiken om snel woordenlijsttestgegevens en validatiescenario's in uw C#-projecten te genereren.
Hier volgt een voorbeeldprompt die u kunt gebruiken in Visual Studio Copilot Chat.
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.
Bekijk de suggesties van Copilot voordat u ze toepast.
Zie de veelgestelde vragen over GitHub Copilot voor meer informatie over GitHub.