|
|
Dipaparkan pada 2022-3-26 16:40:21
|
|
|
|

Sebelum C# 8.0, semua jenis referensi bisa menjadi null. Jenis referensi null mengacu pada sekumpulan fitur yang diperkenalkan dalam C# 8.0 yang dapat digunakan untukMeminimalkan kemungkinan kode Anda akan menyebabkan lemparan runtime。 Jenis referensi yang dapat diterima Null mencakup tiga fitur untuk membantu menghindari pengecualian ini, termasuk kemampuan untuk secara eksplisit menandai jenis referensi sebagai dapat dibayar untuk null:
- Analisis aliran statis yang dioptimalkan untuk menentukan apakah variabel nol sebelum tidak direferensikan.
- Atribut yang digunakan untuk membuat anotasi API sehingga Stream Analytics menentukan status null.
- Anotasi variabel yang dapat digunakan pengembang untuk mendeklarasikan status null yang diharapkan dari variabel secara eksplisit.
Analisis status null dan anotasi variabel dinonaktifkan secara default untuk proyek yang ada, yang berarti bahwa semua jenis referensi masih dapat diakses oleh null. Dimulai dengan .NET 6, fitur-fitur ini diaktifkan secara default untuk proyek baru.
Dokumentasi:Login hyperlink terlihat.
Apa yang harus dilakukan oleh jenis referensi yang bisa nullMeminimalkan kemungkinan aplikasi Anda akan melemparkan System.NullReferenceException saat runtime。
Dalam proyek yang saya kembangkan dengan .NET 6, saya membuat properti Name untuk properti baru yang meminta saya dengan peringatan berikut:
Saat keluar dari konstruktor, properti non-nullable "Name" harus berisi nilai non-null. Pertimbangkan untuk mendeklarasikan properti sebagai null.
Meskipun itu peringatan, itu sangat menjengkelkan! Bagaimana cara memperbaiki peringatan ini? Nilai default untuk penugasan adalah string kosong, dan kodenya adalah sebagai berikut:
Artinya, ketika properti tidak ditetapkan secara manual, nilai default properti adalah string kosong.
Saat menggunakan variabel lokal,Jenisnya adalah string? juga dapat menghasilkan peringatan, seperti yang ditunjukkan pada gambar di bawah ini:
, tentukan apakah variabel null sebelum menggunakannya, dan jika ya, jangan eksekusi kode di bawah ini, atau Anda berpikirVariabel tidak pernah bisa null, dapat digunakanArgumentNullException.ThrowIfNull(assemblyFullName); Peringatan juga dapat dihapus! Dengan kata lain, jika variabel null, variabel akan melemparkan pengecualian secara langsung selama runtime!
Ringkasan: C# 8.0 memperkenalkan fitur ini, dan saya pribadi merasa bahwa itu untuk meningkatkan ketelitian pengembang dan menghindari membuat beberapa kesalahan tingkat rendah.
Untuk solusi metode lainnya yang bisa nol, silakan lihat:Login hyperlink terlihat.
|
Mantan:Mengkueri alamat jarak jauh dari Git proyek saat iniDepan:ASP.NET Inti (dua belas) front-end JS, bundling CSS, dan kompresi
|