Inisialisasi pembolehubah ahli dalam C#: pengisytiharan atau pembina?
Dalam pengaturcaraan berorientasikan objek menggunakan C#, soalan biasa ialah sama ada pembolehubah ahli kelas harus dimulakan apabila diisytiharkan, atau dalam pembina lalai. Artikel ini meneroka kebaikan dan keburukan kedua-dua pendekatan.
Pertimbangan Prestasi
Dari segi prestasi, hampir tiada perbezaan antara memulakan pembolehubah ahli pada masa pengisytiharan dan memulakannya dalam pembina. Pemula medan sebenarnya ditukar kepada logik pembina semasa penyusunan. Walau bagaimanapun, pemula medan dilaksanakan sebelum sebarang logik pembina, termasuk pelaksanaan pembina asas atau pembina ini.
Sifat yang dilaksanakan secara automatik
Untuk sifat yang dilaksanakan secara automatik, pendekatan pembina adalah lebih baik kerana sifat yang dilaksanakan secara automatik tidak boleh dimulakan menggunakan pemula medan. Contohnya:
<code class="language-csharp">[DefaultValue("")] public string Foo { get; set; } public Bar() { Foo = ""; }</code>
Lokaliti dan organisasi
Ramai pembangun lebih suka pemula medan kerana mereka memastikan kod berkaitan disetempatkan. Contohnya, mengisytiharkan senarai peribadi item menggunakan pemula medan menjadikan senarai dan sifat pengaksesnya lebih bebas:
<code class="language-csharp">private readonly List<SomeClass> items = new List<SomeClass>(); public List<SomeClass> Items { get { return items; } }</code>
Pendekatan ini mengurangkan keperluan untuk mencari melalui berbilang segmen kod untuk mencari tempat pembolehubah ahli diberikan nilai.
Permulaan kompleks dan pembina terlebih beban
Walau bagaimanapun, apabila logik permulaan kompleks diperlukan atau apabila mengendalikan berbilang pembina, pembina ialah kaedah pilihan. Sebagai contoh, apabila memulakan kelas Bar, pertimbangkan pembina berikut:
<code class="language-csharp">public Bar() : this("") {} public Bar(string foo) { Foo = foo; }</code>
Dalam kes ini, medan Foo boleh dimulakan kepada nilai yang berbeza bergantung pada pembina yang dipanggil, manakala pemula medan menetapkannya kepada nilai yang sama untuk semua pembina.
Kesimpulan
Sama ada untuk memulakan pembolehubah ahli pada masa pengisytiharan atau dalam pembina akhirnya bergantung pada keperluan khusus kod. Untuk kesederhanaan dan lokaliti, pemula medan biasanya lebih disukai. Walau bagaimanapun, untuk sifat yang dilaksanakan secara automatik, logik permulaan kompleks, atau pengendalian berbilang pembina, pemulaan berasaskan pembina disyorkan.
Atas ialah kandungan terperinci Permulaan Pembolehubah Ahli dalam C#: Deklarasi atau Pembina – Mana Yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!