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
Lepaskan: 2025-01-15 13:41:44
asal
327 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan