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 pengendaliOperator ?, juga dikenali sebagai operator "bersyarat kosong", mempunyai fungsi utama berikut:
?. 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>
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>
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>
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!