Rumah >pembangunan bahagian belakang >C++ >Mengapa Tanda Kurung Pilihan dalam Pemula Objek C# 3.0?

Mengapa Tanda Kurung Pilihan dalam Pemula Objek C# 3.0?

Susan Sarandon
Susan Sarandonasal
2025-01-15 13:32:44942semak imbas

Why Are Parentheses Optional in C# 3.0 Object Initializers?

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:

  • Minimumkan kerumitan: Menambah sokongan untuk kurungan pilihan adalah agak mudah dan tidak meningkatkan kerumitan bahasa dengan ketara.
  • Lewahan yang dikurangkan: Dalam kebanyakan kes, panggilan pembina adalah berlebihan kerana sifat ditetapkan terus dalam pemula objek.
  • Nyahkekaburan: Mengalih keluar kurungan tidak memperkenalkan sebarang kekaburan tatabahasa.
  • Corak penggunaan biasa: Banyak objek tanpa parameter hanya digunakan sebagai "beg harta benda".

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!

Kenyataan:
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