Pengendali null ignore C# (null!
)
Artikel ini meneroka cara pengendali null ignore (null!
) yang diperkenalkan dalam C# 8.0 dan kemudiannya mengendalikan jenis nullable.
Penerangan ringkas:
Pengendalinull!
mengatasi kebolehbatalan null
literal, menyebabkan ia berkelakuan seperti nilai tidak boleh dibatalkan, walaupun jika null
itu sendiri boleh dibatalkan.
Penjelasan teknikal:
Dalam C# 8.0, jenis rujukan tidak boleh dibatalkan secara lalai, dan pengendali ?
digunakan untuk menandai jenis nullable secara eksplisit. Pengendali !
adalah bertentangan dengan pengendali ?
.
Menggunakan pengendali !
kepada jenis yang boleh dibatalkan menukarnya kepada jenis yang tidak boleh dibatalkan, menunjukkan bahawa pengkompil tidak seharusnya melakukan semakan nol pada pembolehubah ini. Begitu juga, pernyataan null!
digunakan !
pada null
literal, dengan berkesan mengatasi keadaan nullable lalainya.
Penggunaan:
Biasanya, pernyataan null!
digunakan apabila kod tersebut memerlukan pembolehubah yang diketahui bukan nol tetapi secara logiknya boleh dibatalkan. Ini membolehkan pengaturcara melumpuhkan semakan nol buat sementara waktu dalam situasi yang tidak diperlukan atau tidak diingini. Pertimbangkan contoh berikut:
<code class="language-csharp">public string LastName { get; } = null!;</code>
Dalam senario ini, sifat LastName
tidak boleh dibatalkan, tetapi ia boleh diberikan nilai menggunakan null!
literal null
kerana kod itu menganggap bahawa nilai itu tidak akan menjadi batal.
Nota:
Walaupun pengendali null!
berguna dalam situasi tertentu, ia harus digunakan dengan berhati-hati. Penggunaan berlebihan null!
boleh menjejaskan faedah keselamatan jenis rujukan yang boleh dibatalkan dan memperkenalkan pepijat yang sukar ditemui disebabkan oleh pengecualian masa jalan.
Ringkasnya, pernyataan null!
ialah alat berkuasa dalam C# 8.0 yang membolehkan pembangun mengatasi kebolehtebalan pembolehubah, termasuk null
literal. Walau bagaimanapun, ia harus digunakan dengan berhati-hati untuk mengekalkan kebolehpercayaan kod.
Atas ialah kandungan terperinci Bagaimanakah Pengendali `null!` Mengatasi Keterasingan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!