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

Mengapa Tanda Kurung Pilihan dalam Pembina Pemula Objek C# 3.0?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-15 13:41:44407semak imbas

Why Are Parentheses Optional in C# 3.0 Object Initializer Constructors?

Apakah sebab mengapa C# 3.0 memperkenalkan tanda kurung pilihan dalam pembina pemula objek?

Sebagai gula sintaksis, C# 3.0 membenarkan menghilangkan tanda kurung dalam panggilan pembina dalam pemula objek, dengan syarat pembina tanpa parameter hadir. Contohnya:

<code class="language-c#">var x = new XTypeName { PropA = value, PropB = value }; // 括号可选</code>

Sebab kurungan pilihan

Pasukan C# memutuskan untuk menjadikan kurungan pilihan berdasarkan pertimbangan berikut:

  • Hapuskan lebihan: Apabila pembina tidak mempunyai parameter, kurungan tidak memberikan sebarang maklumat tambahan.
  • Kos pembangunan yang rendah: Mengubah suai penghurai untuk mengendalikan sintaks pilihan ini agak mudah berbanding dengan keseluruhan fungsi permulaan objek.
  • Kekaburan minimum: Perubahan ini tidak memperkenalkan kekaburan baharu, menjadikannya mudah untuk digunakan oleh pembangun dan IDE untuk menganalisis.
  • Titik terbaik dalam penggunaan biasa: Pemula objek sering digunakan untuk menetapkan sifat pada objek yang tidak mempunyai parameter dalam pembinanya.

Mengapa tidak menjadikan tanda kurung sebagai pilihan dalam semua panggilan pembina lalai?

Memperkenalkan kurungan pilihan dalam kes umum boleh mewujudkan kekaburan semantik, seperti dalam contoh 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>

Dalam kes ini, baris 1 memanggil pembina lalai C dan kemudian memanggil kaedah contoh M, manakala baris 2 mencipta tika baharu B.M dan memanggil pembina lalainya. Menjadikan kurungan pilihan dalam baris 1 menyebabkan kekaburan, memaksa pengkompil untuk memperkenalkan peraturan yang kompleks untuk menyelesaikannya. Kos potensi kerumitan tambahan ini melebihi faedah kurungan pilihan dalam kes ini.

Atas ialah kandungan terperinci Mengapa Tanda Kurung Pilihan dalam Pembina 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