Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un Dictionary<TKey,TValue> contient une collection de paires clé/valeur. Sa méthode Add prend deux paramètres, un pour la clé et un pour la valeur. Une façon d’initialiser un Dictionary<TKey,TValue> ou toute collection dont la méthode Add prend plusieurs paramètres consiste à mettre chaque jeu de paramètres entre accolades, comme illustré dans l’exemple suivant. Une autre option consiste à utiliser un initialiseur d’index, également illustré dans l’exemple suivant.
Notes
La principale différence entre ces deux méthodes d’initialisation de la collection est la façon dont les clés dupliquées sont gérées, par exemple :
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
Addla méthode lève : ArgumentException'An item with the same key has already been added. Key: 111', tandis que la deuxième partie de l’exemple, la méthode d’indexeur de lecture/écriture publique, remplace silencieusement l’entrée déjà existante avec la même clé.
Exemple
Dans l’exemple de code suivant, un Dictionary<TKey,TValue> est initialisé avec des instances de type StudentName. La première initialisation utilise la méthode Add avec deux arguments. Le compilateur génère un appel à Add pour chacune des paires de clés int et de valeurs StudentName. Le deuxième utilise une méthode d’indexeur publique en lecture/écriture de la classe 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}");
}
}
}
Notez les deux paires d’accolades dans chaque élément de la collection dans la première déclaration. Les accolades les plus intérieures entourent l’initialiseur d’objet pour le StudentName et les accolades les plus extérieures entourent l’initialiseur pour la paire clé/valeur à ajouter au studentsDictionary<TKey,TValue>. Pour finir, l’initialiseur de collection entier pour le dictionnaire est placé entre accolades. Dans la deuxième initialisation, le côté gauche de l’affectation est la clé et le côté droit est la valeur, avec un initialiseur d’objet pour StudentName.
Utiliser l’IA pour générer des données de test pour les collections de dictionnaires
Vous pouvez utiliser des outils IA, tels que GitHub Copilot, pour générer rapidement des scénarios de test et de validation de dictionnaire dans vos projets C#.
Voici un exemple d’invite que vous pouvez utiliser dans 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.
Passez en revue les suggestions de Copilot avant de les appliquer.
Pour plus d’informations sur GitHub Copilot, consultez les FAQ de GitHub.