Operator Null-Coalescing
Nilai bawaan ?? dan ??=.
Operator Null-Coalescing adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Menyediakan Nilai Pengganti
Sering kali Anda ingin menggunakan suatu nilai jika tersedia, atau nilai bawaan jika nilainya null. Operator penggabungan nilai kosong ?? melakukan tepat hal tersebut.
a ?? b berarti: gunakan a jika tidak kosong, atau gunakan b jika sebaliknya.
string input = null;
string name = input ?? "Guest";
System.Console.WriteLine(name);Cara ?? Dievaluasi
Sisi kiri dievaluasi terlebih dahulu. Jika sisi kiri memiliki nilai, sisi kanan sama sekali tidak dievaluasi.
Penghentian evaluasi lebih awal ini berarti nilai pengganti yang mahal hanya dijalankan saat benar-benar diperlukan.
string cached = "data";
string value = cached ?? Compute();
System.Console.WriteLine(value);
// Compute() is never called hereBekerja dengan Jenis Nilai yang Dapat Menyimpan Nilai Kosong
?? juga membuka pembungkus jenis nilai yang dapat menyimpan nilai kosong. Penggabungan int? maybe dengan ?? 0 menghasilkan int biasa yang tidak dapat menyimpan nilai kosong.
Ini merupakan cara yang bersih untuk mengonversi int? menjadi int dengan nilai bawaan.
int? maybe = null;
int sure = maybe ?? 0;
System.Console.WriteLine(sure);Contoh yang Dapat Dijalankan
Program ini membaca pengaturan yang mungkin tidak memiliki nilai, lalu menggunakan nilai bawaan sebagai pengganti. Jalankan program ini untuk melihat cara kerja nilai pengganti.
using System;
class Program
{
static void Main()
{
string theme = null;
string active = theme ?? "light";
Console.WriteLine("Theme: " + active);
}
}Merangkai ??
Anda dapat merangkai beberapa nilai pengganti. Ekspresi ini memilih nilai pertama yang tidak kosong dari kiri ke kanan.
a ?? b ?? c mencoba a, lalu b, dan akhirnya c sebagai pilihan terakhir.
string a = null;
string b = null;
string c = "default";
System.Console.WriteLine(a ?? b ?? c);Operator ??=
Penugasan penggabungan nilai kosong ??= menetapkan sisi kanan hanya jika sisi kiri saat ini tidak memiliki nilai.
x ??= y merupakan bentuk singkat dari if (x == null) x = y; dan membiarkan x tidak berubah jika sudah memiliki nilai.
string config = null;
config ??= "default";
System.Console.WriteLine(config);
config ??= "ignored";
System.Console.WriteLine(config);Inisialisasi Tertunda dengan ??=
Penggunaan umum ??= adalah untuk inisialisasi tertunda: buat objek hanya saat pertama kali diperlukan.
Pada pemanggilan berikutnya, bidang tersebut sudah terisi, sehingga ??= tidak melakukan apa-apa.
System.Collections.Generic.List<int> items = null;
items ??= new System.Collections.Generic.List<int>();
items.Add(1);
System.Console.WriteLine(items.Count);Menggabungkan ?. dan ??
Memasangkan ?. dengan ?? merupakan hal yang sangat umum. ?. mencegah pengecualian, sedangkan ?? menyediakan nilai ketika rangkaiannya tidak memiliki nilai.
user?.Name ?? "Unknown" membaca nama dengan aman dan menggunakan "Unknown" sebagai nilai bawaan.
string s = null;
int length = s?.Length ?? -1;
System.Console.WriteLine(length);?? dalam Program Lengkap
Di sini, ?. dan ?? bekerja sama untuk mencetak panjang dengan aman. Jalankan program ini menggunakan string yang tidak memiliki nilai untuk melihat nilai penggantinya.
using System;
class Program
{
static void Main()
{
string username = null;
string display = username ?? "anonymous";
Console.WriteLine(display);
Console.WriteLine(username?.Length ?? 0);
}
}?? untuk Melempar saat Nilai Kosong
Sisi kanan ?? dapat berupa ekspresi apa pun, termasuk throw. Dengan demikian, ?? menjadi cara ringkas untuk segera gagal ketika ditemukan nilai kosong yang tidak terduga.
name ?? throw new ArgumentNullException(nameof(name)) mengembalikan nama, atau melempar pengecualian jika nilainya kosong.
string Validate(string name) =>
name ?? throw new System.ArgumentNullException(nameof(name));Perilaku Asosiatif ke Kanan
?? bersifat asosiatif ke kanan, sehingga a ?? b ?? c dikelompokkan sebagai a ?? (b ?? c).
Dalam praktiknya, ini tetap berarti "nilai pertama yang tidak kosong digunakan", tetapi hal ini penting diketahui saat menalar ekspresi yang rumit.
int? a = null;
int? b = null;
int result = a ?? b ?? 99;
System.Console.WriteLine(result);Pemeriksaan Singkat
Uji pemahaman Anda tentang operator penggabungan nilai kosong.
Rangkuman
?? mengembalikan sisi kirinya jika tidak kosong, atau sisi kanannya jika sebaliknya, dan dapat dirangkai. ??= hanya menetapkan nilai saat targetnya kosong, sehingga cocok untuk inisialisasi tertunda.
Gabungkan keduanya dengan ?. untuk menangani nilai kosong dengan aman dan ringkas, bahkan gunakan ?? throw untuk segera gagal.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Operator Null-Coalescing” gratis?
Ya — teks lengkap “Operator Null-Coalescing” 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 “Operator Null-Coalescing”?
Nilai bawaan ?? dan ??=. 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 3 dari 4.
Berapa lama pelajaran “Operator Null-Coalescing” 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
- Tipe Nilai Nullable
- Operator Null-Conditional
- Operator Null-Coalescing
- Melindungi dari Null