Penjelasan mendalam tentang pengendali bersyarat null C# 6.0: ?.
Pengendali ?. (pengendali bersyarat nol) yang diperkenalkan dalam C# 6.0 telah menarik perhatian meluas daripada pembangun. Ia menyediakan cara yang elegan untuk mengendalikan rujukan nol, menghasilkan kod yang lebih bersih dan cekap.
?. Penjelasan terperinci operator
Peranan teras pengendali? adalah untuk menghalang kemungkinan pengecualian rujukan nol. Mekanisme kerjanya adalah seperti berikut:
Aplikasi praktikal: Mengelakkan pengecualian rujukan nol
Pertimbangkan contoh berikut:
<code class="language-csharp">public class A { public string PropertyOfA { get; set; } } ... var a = new A(); var foo = "bar"; if(a?.PropertyOfA != foo) { //somecode }</code>
Dalam contoh ini, operator ?. dengan elegan mengendalikan kes di mana a mungkin kosong. Jika a kosong, a?.PropertyOfA akan mengembalikan null, mengelakkan NullReferenceException yang disebabkan oleh perbandingan seterusnya. Jika a bukan kosong, a.PropertyOfA dinilai dan dibandingkan dengan foo.
Persamaan dengan pernyataan bersyarat
Pengendali bersyarat kosong adalah seperti pernyataan bersyarat yang dipermudahkan:
<code class="language-csharp">string bar = (a == null ? null : a.PropertyOfA); if (bar != foo) { ... }</code>
Namun, pengendali ?. menyediakan alternatif yang lebih bersih dan cekap.
Nota tentang penukaran jenis
Perlu diingat bahawa menggunakan operator ? boleh menjejaskan jenis ungkapan. Sebagai contoh, jika sifat mengembalikan data jenis panjang, menggunakan operator bersyarat nol akan menghasilkan ungkapan jenis panjang?:
<code class="language-csharp">FileInfo fi = ...; // fi可能为空 long? length = fi?.Length; // 如果fi为空,length将为空</code>
Ringkasan
Operator ? Dengan ciri berkuasa ini, pembangun boleh menulis kod yang lebih mantap dan cekap, mengurangkan kemungkinan pengecualian yang tidak dijangka dan meningkatkan kebolehbacaan kod.Atas ialah kandungan terperinci Bagaimanakah Pengendali Bersyarat Null (?. ) C# 6.0 Menghalang NullReferenceExceptions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!