Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Element Dictionary<TKey,TValue> zawiera kolekcję par klucz/wartość. Metoda Add przyjmuje dwa parametry, jeden dla klucza i jeden dla wartości. Jednym ze sposobów inicjowania Dictionary<TKey,TValue>, lub jakiejkolwiek kolekcji, której metoda Add przyjmuje wiele parametrów, jest ujęcie każdego zestawu parametrów w nawiasach klamrowych, co przedstawiono w poniższym przykładzie. Inną opcją jest użycie inicjatora indeksu, pokazanego również w poniższym przykładzie.
Uwaga
Główną różnicą między tymi dwoma sposobami inicjowania kolekcji jest sposób obsługi zduplikowanych kluczy, na przykład:
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
Add metoda zgłasza ArgumentException: 'An item with the same key has already been added. Key: 111', podczas gdy druga część przykładu, publiczna metoda indeksatora odczytu/zapisu, po cichu zastępuje już istniejący wpis tym samym kluczem.
Przykład
W poniższym przykładzie kodu element Dictionary<TKey,TValue> jest inicjalizowany przy użyciu wystąpień typu StudentName. Pierwsza inicjalizacja Add używa metody z dwoma argumentami. Kompilator generuje wywołanie Add dla każdej pary kluczy int i wartości StudentName. Drugi przykład używa publicznej metody indeksatora odczytu/zapisu klasy 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}");
}
}
}
Zwróć uwagę na dwie pary nawiasów klamrowych w każdym elemecie kolekcji w pierwszej deklaracji. Najbardziej wewnętrzne nawiasy klamrowe otaczają inicjator obiektu dla StudentName, a najbardziej zewnętrzne nawiasy klamrowe otaczają inicjator dla pary klucz/wartość, która ma zostać dodana do studentsDictionary<TKey,TValue>. Na koniec cały inicjator kolekcji dla słownika jest ujęty w klamry. W drugiej inicjalizacji lewa strona przypisania jest kluczem, a prawa strona jest wartością z użyciem inicjatora obiektu dla StudentName.
Generowanie danych testowych dla kolekcji słowników przy użyciu sztucznej inteligencji
Możesz użyć narzędzi sztucznej inteligencji, takich jak GitHub Copilot, aby szybko wygenerować dane testowe słownika i scenariusze weryfikacji w projektach języka C#.
Oto przykładowy monit, którego można użyć w programie 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.
Przed ich zastosowaniem przejrzyj sugestie Copilota.
Aby uzyskać więcej informacji na temat narzędzia GitHub Copilot, zobacz Często zadawane pytania dotyczące usługi GitHub.