List pattern memeriksa isi kumpulan data elemen demi elemen: [3, 7, 11] berarti kumpulan dengan tiga elemen bernilai itu berurutan. Fitur ini diperkenalkan C# 11 dan bekerja pada tipe yang punya penghitung elemen serta pengindeks, seperti array, List<T>, dan string. Bab ini membahas elemen pola, slice pattern, dan contoh penggunaannya.
Elemen Pola dan Slice #
Di dalam kurung siku, setiap posisi memakai pola yang sudah kita kenal: constant, relational, type, atau var. Tanda .. adalah slice pattern yang cocok dengan nol atau lebih elemen apa pun, sehingga [var awal, .., var akhir] menangkap ujung-ujung kumpulan tanpa peduli panjangnya. Pola [] khusus mencocokkan kumpulan kosong.
Contoh: Kombinasi, Kode, dan Rentetan #
int[] kombinasi = { 3, 7, 11 };
string hasil = kombinasi switch
{
[3, 7, 11] => "Kombinasi standar",
[var awal, .., var akhir] => $"Ujung {awal} dan {akhir}",
_ => "Format tidak dikenal"
};
Console.WriteLine(hasil);
int[] dataPendek = { 9 };
string deskripsi = dataPendek switch
{
[var tunggal] => $"Satu elemen: {tunggal}",
[] => "Array kosong",
_ => "Lebih dari satu elemen"
};
Console.WriteLine(deskripsi);
if (kombinasi is [_, 7, _])
{
Console.WriteLine("Elemen kedua bernilai 7");
}
if (kombinasi is [.., >= 10])
{
Console.WriteLine("Elemen terakhir minimal 10");
}
if ("BUDI-21" is ['B', .., '1'])
{
Console.WriteLine("Kode diawali B dan diakhiri 1");
}Output yang Dihasilkan:
Kombinasi standar
Satu elemen: 9
Elemen kedua bernilai 7
Elemen terakhir minimal 10
Kode diawali B dan diakhiri 1Mari kita bedah baris demi baris:
[3, 7, 11]: Tiga constant pattern diuji berurutan terhadap elemen indeks 0 sampai 2; array contoh cocok penuh di arm pertama.[var awal, .., var akhir]: Slice pattern menengah menampung sisa elemen tanpa mengikatnya, sementaravarmenangkap elemen pertama dan terakhir.[var tunggal]dan[]: Urutan arm padadataPendekmenunjukkan pencocokan panjang: satu elemen ditangkap arm pertama, dan kumpulan kosong jatuh ke pola[].[_, 7, _]: Pola panjang tetap tiga dengan posisi tengah berupa constant; arm ini menuntut panjang tepat tiga sekaligus nilai tengah7.[.., >= 10]: Slice di awal menampung semua elemen kecuali yang terakhir, dan posisi terakhir diuji relational pattern."BUDI-21" is ['B', .., '1']: String ikut dicocokkan per karakter, sehingga aturan awalan dan akhiran kode terbaca sebagai satu pola.
Syarat Tipe yang Didukung #
List pattern menuntut tipe dengan properti Count atau Length dan indexer yang bisa dibaca. Array, List<T>, Span<T>, dan string memenuhi syarat itu. Kumpulan yang hanya bisa diiterasi, seperti IEnumerable<T> polos, tidak didukung karena pola perlu akses posisi langsung.