Cara menginisialisasi kamus dengan penginisialisasi koleksi (Panduan Pemrograman C#)
Dictionary<TKey,TValue> berisi kumpulan pasangan kunci/nilai. Metode Add -nya membutuhkan dua parameter, satu untuk kunci dan satu untuk nilainya. Salah satu cara untuk menginisialisasi Dictionary<TKey,TValue>, atau kumpulan apa pun yang metode Add
-nya menggunakan banyak parameter, adalah dengan menyertakan setiap rangkaian parameter dalam kurung kurawal seperti yang ditunjukkan pada contoh berikut. Pilihan lainnya adalah menggunakan penginisialisasi indeks, juga ditunjukkan dalam contoh berikut.
Catatan
Perbedaan utama antara kedua cara ini untuk menginisialisasi koleksi adalah bahwa jika memiliki kunci duplikat, misalnya:
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
Add metode akan melemparkan ArgumentException: 'An item with the same key has already been added. Key: 111'
, sementara bagian kedua dari contoh, metode pengindeks baca / tulis publik, akan diam-diam menimpa entri yang sudah ada dengan kunci yang sama.
Contoh
Dalam contoh kode berikut, Dictionary<TKey,TValue> diinisialisasi dengan instans berjenis StudentName
. Inisialisasi pertama menggunakan metode Add
dengan dua argumen. Kompilator membuat panggilan ke Add
untuk setiap pasangan kunci int
dan nilai StudentName
. Yang kedua menggunakan metode pengindeks baca/tulis publik dari kelas 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}");
}
}
}
Perhatikan dua pasang kurung kurawal di setiap elemen koleksi dalam deklarasi pertama. Kurung kurawal terdahulu mengapit penginisialisasi objek untuk StudentName
, dan kurung kurawal terluar sertakan penginisialisasi untuk pasangan kunci/nilai yang akan ditambahkan ke students
Dictionary<TKey,TValue>. Akhirnya, seluruh penginisialisasi koleksi untuk kamus diapit dalam kurung kurawal. Pada inisialisasi kedua, sisi kiri penugasan adalah kunci dan sisi kanan adalah nilainya, menggunakan penginisialisasi objek untuk StudentName
.