Melindungi dari Null
Validasi dan pola.
Melindungi dari Null adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Mengapa Melindungi dari Nilai Kosong?
Metode yang menerima nilai null yang tidak terduga sering kali gagal di kemudian hari dengan NullReferenceException yang membingungkan, jauh di dalam tumpukan pemanggilan.
Perlindungan berarti memeriksa argumen sejak awal dan gagal dengan jelas, sehingga kesalahan langsung menunjuk penyebab sebenarnya.
Pemeriksaan Nilai Kosong Klasik
Perlindungan paling sederhana adalah pemeriksaan eksplisit yang melempar ArgumentNullException ketika argumen yang wajib diisi tidak memiliki nilai.
Dengan cara ini, masukan divalidasi di batas metode sebelum pekerjaan apa pun dimulai.
void Save(string path)
{
if (path == null)
throw new System.ArgumentNullException(nameof(path));
System.Console.WriteLine(path);
}Gunakan Nama Parameter
Berikan nameof(path), bukan string yang ditulis secara langsung. Pengecualian kemudian melaporkan nama parameter yang tepat, dan tetap benar jika Anda mengganti nama parameter tersebut.
Hal ini membuat proses penelusuran kesalahan jauh lebih mudah saat pengecualian dicatat.
void Greet(string user)
{
if (user is null)
throw new System.ArgumentNullException(nameof(user));
System.Console.WriteLine("Hi " + user);
}Pembantu ThrowIfNull
C# modern menyediakan ArgumentNullException.ThrowIfNull(arg). Fitur ini memeriksa nilai kosong dan melempar pengecualian dengan nama parameter yang tepat secara otomatis.
Penulisannya ringkas dan merupakan gaya perlindungan yang disarankan dalam kode .NET saat ini.
void Process(object data)
{
System.ArgumentNullException.ThrowIfNull(data);
System.Console.WriteLine("Processing");
}Perlindungan yang Dapat Dijalankan
Program ini menunjukkan perlindungan yang menangkap argumen tanpa nilai dan melaporkannya dengan bersih, alih-alih gagal di kemudian hari.
Jalankan program ini untuk melihat pesan pengecualian yang mencantumkan nama parameter yang bermasalah.
using System;
class Program
{
static void Print(string text)
{
ArgumentNullException.ThrowIfNull(text);
Console.WriteLine(text);
}
static void Main()
{
try { Print(null); }
catch (ArgumentNullException ex) { Console.WriteLine(ex.ParamName); }
}
}Melindungi dengan ?? throw
Anda dapat menggabungkan penetapan nilai dan perlindungan dengan menggunakan ?? bersama throw. Cara ini memvalidasi dan menyimpan nilai dalam satu baris.
Pola ini populer dalam konstruktor saat menetapkan nilai ke suatu bidang.
class Service
{
private readonly string _name;
public Service(string name)
=> _name = name ?? throw new System.ArgumentNullException(nameof(name));
}Kosong versus Nilai Null
Untuk string, nilai kosong dan nilai null merupakan masalah yang berbeda. Gunakan string.IsNullOrEmpty atau string.IsNullOrWhiteSpace untuk menangani keduanya sekaligus.
ArgumentException (bukan ArgumentNullException) sesuai untuk nilai yang kosong tetapi bukan null.
void SetName(string name)
{
if (string.IsNullOrWhiteSpace(name))
throw new System.ArgumentException("Name required", nameof(name));
}Melindungi dengan Pola
Pola is null dan is not null mudah dibaca dan tidak dapat dikelabui oleh operator kesetaraan yang dibebani ulang.
Lebih baik gunakan is null daripada == null ketika suatu jenis mungkin mengganti perilaku ==.
object value = null;
if (value is null)
System.Console.WriteLine("It is null");
if (value is not null)
System.Console.WriteLine("Has value");Memberikan Nilai Bawaan, Bukan Melempar
Tidak semua nilai kosong merupakan kesalahan. Terkadang nilai bawaan yang masuk akal lebih baik daripada pengecualian.
Gunakan ?? ketika nilai kosong dapat diterima, dan melempar pengecualian hanya jika nilainya benar-benar diperlukan.
string BuildPath(string folder)
{
folder ??= "/tmp";
return folder + "/file.txt";
}Jenis Referensi yang Dapat Menyimpan Nilai Kosong Membantu
Dengan jenis referensi yang dapat menyimpan nilai kosong diaktifkan, kompiler memperingatkan Anda saat mungkin mencoba mengakses nilai yang tidak memiliki nilai, sehingga bug dapat ditemukan sebelum program berjalan.
Mendeklarasikan string (tidak kosong) dibandingkan string? (dapat kosong) mendokumentasikan maksud Anda dan membantu penganalisis.
#nullable enable
string required = "ok";
string? optional = null;
System.Console.WriteLine(optional?.Length ?? 0);Lindungi, Lalu Gunakan dengan Aman
Setelah Anda melakukan perlindungan di awal metode, bagian tubuh metode selanjutnya dapat menggunakan nilainya tanpa pemeriksaan nilai kosong berulang.
Program ini melakukan perlindungan, lalu menggunakan argumen tersebut dengan yakin.
using System;
class Program
{
static int Length(string s)
{
ArgumentNullException.ThrowIfNull(s);
return s.Length;
}
static void Main()
{
Console.WriteLine(Length("hello"));
}
}Pemeriksaan Singkat
Uji pemahaman Anda tentang perlindungan terhadap nilai kosong.
Rangkuman
Lindungi argumen yang wajib diisi pada awal metode. Gunakan ArgumentNullException.ThrowIfNull atau ?? throw bersama nameof untuk menghasilkan kesalahan yang jelas.
Gunakan string.IsNullOrWhiteSpace untuk string kosong, pola is null untuk pemeriksaan yang aman, dan ?? jika nilai bawaan dapat diterima daripada gagal.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Melindungi dari Null” gratis?
Ya — teks lengkap “Melindungi dari Null” 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 “Melindungi dari Null”?
Validasi dan pola. 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 4 dari 4.
Berapa lama pelajaran “Melindungi dari Null” 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