Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Dictionary<TKey,TValue> enthält eine Sammlung von Schlüssel-Wert-Paaren. Die Add-Methode nimmt zwei Parameter an, einen für den Schlüssel und einen für den Wert. Eine Möglichkeit, um eine Dictionary<TKey,TValue>-Klasse oder eine beliebige Sammlung zu initialisieren, deren Add
-Methode mehrere Parameter annimmt, ist es, jedes Parameterpaar in Klammern einzuschließen, so wie im folgenden Beispiel dargestellt. Eine andere Möglichkeit besteht darin, einen Index-Initialisierer zu verwenden, wie im nächsten Beispiel gezeigt wird.
Hinweis
Der Hauptunterschied zwischen diesen beiden Initialisierungsmethoden für die Sammlung ist folgender, wenn duplizierte Schlüssel vorhanden sind:
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
Die Add-Methode löst ArgumentException aus: 'An item with the same key has already been added. Key: 111'
, und der zweite Teil des Beispiels, also die Indexermethode für Lese-/Schreibvorgänge, überschreibt die vorhandenen Einträge mit demselben Schlüssel.
Tipp
Sie können KI-Unterstützung verwenden, um mit GitHub Copilot ein Wörterbuch zu initialisieren.
Beispiel
Im folgenden Codebeispiel wird Dictionary<TKey,TValue> mit Instanzen vom Typ StudentName
initialisiert. Die erste Initialisierung verwendet die Add
-Methode mit zwei Argumenten. Der Compiler führt für Add
einen Aufruf für jedes der Paare von int
-Schlüsseln und StudentName
-Werten durch. Bei der zweiten Initialisierung wird eine öffentliche Indexermethode der Dictionary
-Klasse für Lese- und Schreibvorgänge verwendet:
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}");
}
}
}
Beachten Sie die zwei Paare geschweifter Klammern in jedem Element der Collection in der ersten Deklaration. Die inneren Klammern umschließen den Objektinitialisierer für StudentName
, und die äußeren Klammern umschließen den Initialisierer für das Schlüssel-Wert-Paar, das students
Dictionary<TKey,TValue> hinzugefügt wird. Schließlich wird der ganze Auflistungsinitialisierer für das Wörterbuch in geschweifte Klammern eingeschlossen. Bei der zweiten Initialisierung ist die linke Seite des Arbeitsauftrags der Schlüssel und die rechte Seite ist der Wert. Für StudentName
wird ein Objektinitialisierer verwendet.
Verwenden von GitHub Copilot zum Initialisieren eines Wörterbuchs
Sie können GitHub Copilot in Ihrer IDE verwenden, um C#-Code zu generieren, um ein Wörterbuch mit einem Sammlungsinitialisierer zu initialisieren. Sie können die Eingabeaufforderung anpassen, um Spezifisches für Ihre Anforderungen hinzuzufügen.
Der folgende Text zeigt ein Beispiel für eine Eingabeaufforderung für 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 wird von KI unterstützt, sodass Überraschungen und Fehler möglich sind. Weitere Informationen finden Sie unter Copilot FAQs.
Erfahren Sie mehr über GitHub Copilot in Visual Studio und GitHub Copilot in VS Code.