Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah pengendali null-conditional C# 6.0 (?) Mencegah NullReferenceExceptions?

Bagaimanakah pengendali null-conditional C# 6.0 (?) Mencegah NullReferenceExceptions?

Barbara Streisand
Lepaskan: 2025-01-25 15:22:09
asal
301 orang telah melayarinya

C# 6.0 Null-Conditional Operator (?.)

C# 6.0’s ? C# 6.0 memperkenalkan operator ?, yang mengubah sepenuhnya cara rujukan nol dikendalikan. Operator ini menyelesaikan masalah biasa yang boleh menyebabkan pengecualian masa jalan apabila mengakses sifat objek nol atau memanggil kaedahnya.

?. Tujuan pengendali

Operator ?, juga dikenali sebagai operator "bersyarat kosong", mempunyai fungsi utama berikut:

    Semakan nol:
  • Ia menilai sama ada operan pertama (cth. a) adalah nol. Jika a kosong, pengendali menamatkan penilaian dan mengembalikan nol.
  • Akses ahli:
  • Jika a bukan batal, pengendali meneruskan penilaian dan mengakses ahli operan pertama (cth. a.PropertyOfA).
Penggunaan

?. Penggunaan operator adalah mudah:

Dalam contoh di atas, jika a adalah nol, ungkapan a?.PropertyOfA akan menilai kepada null dan perbandingan dengan foo akan menghasilkan palsu, membenarkan pelaksanaan diteruskan dalam pernyataan if tanpa menimbulkan rujukan null tidak normal.
<code class="language-csharp">if (a?.PropertyOfA != foo) {
   //somecode
}</code>
Salin selepas log masuk

Persamaan

Secara konsep, operator ?. boleh bersamaan dengan kod berikut:

Walau bagaimanapun, pengendali ?. mengelakkan penilaian berlebihan a dan mengoptimumkan prestasi kod.
<code class="language-csharp">if (a != null) {
    a.PropertyOfA;
}
else {
    null;
}</code>
Salin selepas log masuk

Contoh Permohonan

Pertimbangkan senario di mana anda mempunyai objek FileInfo fi, yang mungkin batal atau tidak. Dengan menggunakan operator ?. anda boleh mengelakkan kemungkinan pengecualian:

Dalam kes ini, jika fi kosong, panjang akan ditetapkan kepada null tanpa membuang pengecualian.
<code class="language-csharp">FileInfo fi = ...; // fi 可能为空
long? length = fi?.Length; // 如果 fi 为空,则 length 将为空</code>
Salin selepas log masuk

Kesimpulan

Pengendali ?. dalam C# 6.0 menyediakan penyelesaian yang elegan dan cekap untuk mengendalikan rujukan nol, membolehkan pembangun menulis kod yang lebih mantap dan ringkas. Ia memudahkan struktur kod dan meningkatkan keselamatan program dengan menyediakan kedua-dua semakan nol dan akses ahli dalam satu ungkapan.

Atas ialah kandungan terperinci Bagaimanakah pengendali null-conditional C# 6.0 (?) Mencegah NullReferenceExceptions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan