Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengelak Penduaan Kod Apabila Memulakan Medan Baca Sahaja dalam Berbilang Pembina?

Bagaimanakah Saya Boleh Mengelak Penduaan Kod Apabila Memulakan Medan Baca Sahaja dalam Berbilang Pembina?

DDD
DDDasal
2025-01-12 11:46:41620semak imbas

How Can I Avoid Code Duplication When Initializing Readonly Fields in Multiple Constructors?

Panggil pembina lain dalam pembina

Dalam kelas, pembina digunakan untuk memulakan medan apabila objek dicipta. Dalam sesetengah kes, berbilang pembina mungkin memberikan nilai kepada medan baca sahaja. Pertimbangkan kelas berikut:

<code class="language-c#">public class Sample
{
    public Sample(string theIntAsString)
    {
        int i = int.Parse(theIntAsString);
        _intField = i;
    }

    public Sample(int theInt) => _intField = theInt;
    public int IntProperty => _intField;

    private readonly int _intField;
}</code>

Terdapat dua pembina di sini. Walau bagaimanapun, masalah timbul apabila anda ingin mengelakkan penduaan kod persediaan medan, kerana medan baca sahaja perlu dimulakan dalam pembina.

Nasib baik, ada penyelesaian: gunakan rantaian pembina. Dengan menambah baris berikut dalam pembina hujah rentetan:

<code class="language-c#">public Sample(string str) : this(int.Parse(str)) { }</code>

Anda boleh memanggil pembina parameter integer daripada pembina parameter rentetan. Ini mewakilkan permulaan medan kepada kod sedia ada, menghapuskan keperluan untuk pendua.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Penduaan Kod Apabila Memulakan Medan Baca Sahaja dalam Berbilang Pembina?. 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