Collection initializer pada bab sebelumnya masih menuntut penulisan new List<string> lengkap dengan tipenya. C# 12 memperkenalkan penulisan yang lebih ringkas lagi: collection expression. Dengan sintaks kurung siku, kita menuliskan isi koleksi persis seperti konsepnya — [a, b, c] — dan compiler menyesuaikan tipe koleksinya dari konteks.
Sintaks Kurung Siku #
Collection expression memerlukan C# 12 atau lebih baru (bawaan .NET 8 ke atas). Karena compiler memilih tipe target dari sisi kiri penugasan, fitur ini disebut juga target-typed: satu sintaks yang sama menghasilkan List, array, atau tipe koleksi lain sesuai deklarasi variabelnya.
List<string> keranjang = ["Beras", "Minyak goreng", "Telur"];
string[] hariKerja = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat"];
Console.WriteLine($"Keranjang: {keranjang.Count} item");
Console.WriteLine($"Hari kerja pertama: {hariKerja[0]}");
List<int> nomorAntrean = [];
nomorAntrean.Add(101);
nomorAntrean.Add(102);
Console.WriteLine($"Nomor antrean: {string.Join(", ", nomorAntrean)}");
int[] hargaSatuan = [12000, 18000, 25000];
int total = 0;
foreach (int harga in hargaSatuan)
{
total += harga;
}
Console.WriteLine($"Total harga: {total}");
List<string> keranjangLengkap = ["Laptop", .. keranjang, "Mouse"];
Console.WriteLine($"Gabungan: {string.Join(", ", keranjangLengkap)}");Output yang Dihasilkan:
Keranjang: 3 item
Hari kerja pertama: Senin
Nomor antrean: 101, 102
Total harga: 55000
Gabungan: Laptop, Beras, Minyak goreng, Telur, MouseMari kita telaah baris demi baris:
- Baris 1-2: Sintaks yang sama (
[ ... ]) membuatList<string>danstring[]; tipe target di kiri menentukan hasilnya. - Baris 7 (
List<int> nomorAntrean = [];): Pasangan kurung siku kosong membuat koleksi kosong — penulisan paling singkat untuk instans tanpa isi. - Baris 12-18: Array
hargaSatuandiisi tiga harga, lalu loop menjumlahkannya menjadi55000. - Baris 20 (
["Laptop", .. keranjang, "Mouse"]): Notasi..disebut spread element: seluruh isikeranjangdisisipkan di posisi tersebut, sehingga hasilnyaLaptop,Beras,Minyak goreng,Telur,Mouse.
Perbandingan dengan Bentuk Sebelumnya #
Tiga bentuk penulisan kini tersedia, dan pengetahuannya saling melengkapi:
| Bentuk | Contoh | Sejak |
|---|---|---|
Add berulang | daftar.Add("Beras"); | C# 1.0 |
| Collection initializer | new List<string> { "Beras" } | C# 3.0 |
| Collection expression | List<string> x = ["Beras"]; | C# 12 |
Spread element juga bisa dirantai: [.. a, .. b] menggabungkan dua koleksi sekaligus, dan satu elemen tunggal boleh diselipkan di antaranya seperti pada contoh "Laptop" dan "Mouse". Kombinasi ini menggantikan pola lama yang memerlukan AddRange dan loop tersendiri.