Rumah >pembangunan bahagian belakang >C++ >Mengapa Tanda Kurung Pilihan dalam Pemula Objek C# 3.0?
Kurungan pilihan dalam pembina pemula objek C# 3.0
Dalam C# 3.0, apabila memulakan objek menggunakan sintaks pemula objek, anda boleh meninggalkan tanda kurung di sekeliling pembina jika pembina tidak mempunyai sebarang parameter. Ini kerana pendakap kerinting selepas nama jenis menunjukkan permulaan pemula objek.
Pertimbangan Reka Bentuk
Keputusan untuk menjadikan kurungan pilihan didorong oleh beberapa faktor, termasuk:
Pertimbangan kekaburan
Walaupun tanda kurung pilihan tidak menimbulkan masalah dalam konteks pemula objek, ia boleh memperkenalkan kesamaran jika digunakan pada panggilan pembina lalai tanpa pemula objek. Pertimbangkan kod berikut:
<code class="language-c#">class P { class B { public class M { } } class C : B { new public void M(){} } static void Main() { new C().M(); // 1 new C.M(); // 2 } }</code>
Barisan 1 mencipta objek C baharu dan memanggil kaedah contoh M. Baris 2 mencipta objek B.M baharu dan memanggil pembinanya. Jika kurungan pada baris 2 adalah pilihan, program ini akan menjadi samar-samar kerana tidak jelas sama ada C.M merujuk kepada pembina C atau kepada kelas M yang bersarang dalam B .
Nyahkekaburan berasaskan heuristik
Untuk menyelesaikan kemungkinan kekaburan, pengkompil menggunakan heuristik untuk menentukan niat kod. Contohnya, jika terdapat jenis, medan atau kaedah dengan nama yang sama dengan pengecam titik, pengecam titik dianggap merujuk kepada ahli tersebut. Walau bagaimanapun, heuristik yang digunakan tidak selalu membawa kepada tafsiran yang diharapkan, terutamanya dalam kod kompleks.
Atas ialah kandungan terperinci Mengapa Tanda Kurung Pilihan dalam Pemula Objek C# 3.0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!