Pola Tipe dan Properti
Cocokkan berdasarkan bentuk dan anggota.
Pola Tipe dan Properti adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Pola Tipe
Pola tipe cocok ketika masukan merupakan instans dari tipe tertentu. Jika ditulis hanya sebagai nama tipe dalam cabang pemilihan, pola ini menguji tipe nilai saat program berjalan.
Pola ini menggantikan pemeriksaan is yang rumit beserta rangkaian konversi tipe dengan pemeriksaan satu ekspresi yang bersih dan juga mempersempit tipe untuk Anda.
object o = "hello";
string kind = o switch
{
int => "number",
string => "text",
_ => "unknown"
};
System.Console.WriteLine(kind);Pola Deklarasi
Pola deklarasi menambahkan nama variabel setelah tipe: string s. Jika cocok, masukan dikonversi dan diikat ke variabel tersebut.
Selanjutnya, Anda dapat menggunakan variabel bertipe itu di sisi kanan cabang untuk mengakses anggota khusus tipe tersebut tanpa konversi tambahan.
object o = "coddy";
string result = o switch
{
string s => $"len {s.Length}",
int n => $"value {n}",
_ => "other"
};
System.Console.WriteLine(result);Pemilihan Tipe yang Dapat Dijalankan
Pola tipe sangat cocok untuk memproses data heterogen, seperti mengurai nilai dari larik object.
Di sini, setiap elemen dicocokkan berdasarkan tipenya saat program berjalan lalu diformat sesuai kebutuhan. Variabel yang diikat membawa tipe yang telah dipersempit ke dalam ekspresi hasil.
using System;
class Program {
static string Describe(object o) => o switch {
int i => $"int {i}",
double d => $"double {d}",
string s => $"string '{s}'",
_ => "?"
};
static void Main() {
foreach (var x in new object[]{ 1, 2.5, "hi" })
Console.WriteLine(Describe(x));
}
}Pola Properti
Pola properti memeriksa anggota objek menggunakan kurung kurawal: { Property: value }. Pola ini cocok jika setiap properti yang dicantumkan memenuhi pola di dalamnya.
Dengan demikian, Anda dapat membuat percabangan berdasarkan struktur dan isi objek secara langsung, tanpa menulis perbandingan anggota secara manual.
record Person(string Name, int Age);
var p = new Person("Ada", 30);
string stage = p switch
{
{ Age: < 18 } => "minor",
{ Age: >= 65 } => "senior",
_ => "adult"
};
System.Console.WriteLine(stage);Beberapa Properti
Anda dapat memeriksa beberapa properti sekaligus dengan memisahkannya menggunakan koma di dalam kurung kurawal. Semuanya harus cocok agar cabang dipilih.
Hal ini menyatakan kondisi gabungan dengan jelas, misalnya mencocokkan objek yang memiliki status dan jumlah tertentu.
record Order(string Status, int Items);
var order = new Order("Open", 0);
string msg = order switch
{
{ Status: "Open", Items: 0 } => "empty cart",
{ Status: "Open" } => "shopping",
_ => "closed"
};
System.Console.WriteLine(msg);Menggabungkan Tipe dan Properti
Pola tipe dan properti dapat digabungkan: tulis tipe, lalu blok properti dalam kurung kurawal. Cabang hanya cocok jika masukan memiliki tipe tersebut dan propertinya juga cocok.
Hal ini sangat berguna saat menangani referensi kelas dasar atau antarmuka ketika Anda ingin membuat percabangan berdasarkan subtipe konkret sekaligus keadaannya.
using System;
abstract record Shape;
record Circle(double R) : Shape;
record Square(double Side) : Shape;
class Program {
static string Big(Shape s) => s switch {
Circle { R: > 10 } => "big circle",
Square { Side: > 10 } => "big square",
_ => "small"
};
static void Main() => Console.WriteLine(Big(new Circle(12)));
}Pola Properti Bertingkat
Pola properti dapat dibuat bertingkat. Jika sebuah properti merupakan objek, Anda dapat mencocokkan anggotanya dengan blok kurung kurawal lainnya.
Contohnya, { Address: { City: "Paris" } } menelusuri dua tingkat ke dalam dalam satu ekspresi. Hal ini menghindari rangkaian akses bertitik yang rawan nilai kosong.
record Address(string City);
record User(string Name, Address Address);
var u = new User("Lin", new Address("Paris"));
bool inParis = u is { Address: { City: "Paris" } };
System.Console.WriteLine(inParis);Akses Properti yang Diperluas
Sejak C# 10, Anda dapat menggunakan jalur bertitik di dalam pola properti: { Address.City: "Paris" }. Ini merupakan bentuk singkat dari kurung kurawal bertingkat.
Hal ini meratakan pemeriksaan bertingkat menjadi satu baris yang mudah dibaca, sekaligus tetap menangani nilai perantara dengan aman selama pencocokan.
record Address(string City);
record User(string Name, Address Address);
var u = new User("Lin", new Address("Rome"));
string where = u switch
{
{ Address.City: "Paris" } => "FR",
{ Address.City: "Rome" } => "IT",
_ => "??"
};
System.Console.WriteLine(where);Menangkap Seluruh Kecocokan
Anda dapat mengikat variabel ke seluruh nilai yang cocok dengan menambahkan nama setelah pola properti: { Age: > 18 } adult.
Variabel adult kemudian merujuk pada seluruh objek di dalam cabang, sehingga Anda dapat menggunakannya setelah memastikan propertinya lulus pemeriksaan.
using System;
record Person(string Name, int Age);
class Program {
static void Main() {
Person p = new("Sam", 40);
string r = p switch {
{ Age: >= 18 } adult => $"{adult.Name} can vote",
_ => "too young"
};
Console.WriteLine(r);
}
}Penanganan Nilai Kosong
Pola properti tidak pernah cocok dengan null karena tidak ada objek yang dapat diperiksa. Jadi, { } (kurung kurawal kosong) cocok dengan nilai apa pun yang tidak kosong.
Hal ini menjadikan not null dan { } idiom yang berguna untuk memeriksa nilai kosong, serta memastikan cabang berbasis properti melewati masukan kosong dengan aman.
string? maybe = null;
string state = maybe switch
{
null => "missing",
{ Length: 0 } => "empty",
_ => "has text"
};
System.Console.WriteLine(state);Mengapa Pola Lebih Baik daripada Konversi Tipe
Sebelum pola tersedia, percabangan berdasarkan tipe berarti melakukan pemeriksaan is, lalu konversi tipe dan penjagaan nilai kosong. Pola tipe dan properti menggabungkan semuanya ke dalam satu ekspresi.
Kompilator juga melacak kelengkapan dan keterjangkauan, sehingga dapat menemukan cabang yang tidak pernah dijalankan dan kasus yang hilang, yang mungkin diabaikan secara diam-diam oleh rangkaian kondisi yang ditulis manual.
object o = 42;
// Old: if (o is int) { int n = (int)o; ... }
// New:
if (o is int n) System.Console.WriteLine(n + 1);Uji Cepat
Uji pemahaman Anda tentang pola tipe dan properti.
Ringkasan
Pola tipe mencocokkan berdasarkan tipe saat program berjalan dan dapat mengikat variabel bertipe. Pola properti memeriksa anggota dengan { Prop: pattern }, mendukung jalur bertingkat dan bertitik, serta tidak pernah cocok dengan nilai kosong.
Gabungkan keduanya untuk membuat percabangan berdasarkan struktur dan keadaan. Berikutnya kita akan membahas pola relasional dan logika.
Belajar C# dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 93
- Pelajaran
- 346
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pola Tipe dan Properti” gratis?
Ya — teks lengkap “Pola Tipe dan Properti” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pola Tipe dan Properti”?
Cocokkan berdasarkan bentuk dan anggota. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Pola Tipe dan Properti” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Ekspresi switch
- Pola Tipe dan Properti
- Pola Relasional dan Logis
- Pola List dan Tuple