Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
A Dictionary<TKey,TValue> innehåller en samling nyckel/värde-par. Metoden Add tar två parametrar, en för nyckeln och en för värdet. Ett sätt att initiera en Dictionary<TKey,TValue>, eller en samling vars Add metod tar flera parametrar, är att omsluta varje uppsättning parametrar i klammerparenteser enligt följande exempel. Ett annat alternativ är att använda en indexinitierare, som också visas i följande exempel.
Kommentar
Den största skillnaden mellan dessa två sätt att initiera samlingen är hur duplicerade nycklar hanteras, till exempel:
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
Add metoden genererar ArgumentException: 'An item with the same key has already been added. Key: 111', medan den andra delen av exemplet, metoden public read/write indexer, tyst skriver över den redan befintliga posten med samma nyckel.
Exempel
I följande kodexempel initieras en Dictionary<TKey,TValue> med instanser av typen StudentName. Den första initieringen använder Add metoden med två argument. Kompilatorn genererar ett anrop till Add för vart och ett av paren int med nycklar och StudentName värden. Den andra använder en offentlig read/write indexer-metod för Dictionary klassen:
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}");
}
}
}
Observera de två paren med klammerpar i varje element i samlingen i den första deklarationen. De innersta klammerparenteserna omger objektinitieraren för StudentName, och de yttersta klammerparenteserna omger initieraren för nyckel/värde-paret som ska läggas till i studentsDictionary<TKey,TValue>. Slutligen omges hela insamlingsinitieraren för ordlistan av klammerparenteser. I den andra initieringen är den vänstra sidan av tilldelningen nyckeln och den högra sidan är värdet, med hjälp av en objektinitierare för StudentName.
Använda AI för att generera testdata för ordlistesamlingar
Du kan använda AI-verktyg, till exempel GitHub Copilot, för att snabbt generera ordlistetestdata och valideringsscenarier i dina C#-projekt.
Här är en exempelfråga som du kan använda i 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.
Granska Copilots förslag innan du tillämpar dem.
Mer information om GitHub Copilot finns i Vanliga frågor och svar om GitHub.