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
Lepaskan: 2025-01-12 11:46:41
asal
658 orang telah melayarinya

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

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan