Heim > Backend-Entwicklung > C++ > Wie kann ich Codeduplizierung vermeiden, wenn ich schreibgeschützte Felder in mehreren Konstruktoren initialisiere?

Wie kann ich Codeduplizierung vermeiden, wenn ich schreibgeschützte Felder in mehreren Konstruktoren initialisiere?

DDD
Freigeben: 2025-01-12 11:46:41
Original
616 Leute haben es durchsucht

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

Rufen Sie einen anderen Konstruktor innerhalb eines Konstruktors auf

In einer Klasse wird der Konstruktor verwendet, um Felder zu initialisieren, wenn das Objekt erstellt wird. In einigen Fällen können mehrere Konstruktoren Werte für schreibgeschützte Felder bereitstellen. Betrachten Sie die folgende Klasse:

<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>
Nach dem Login kopieren

Hier gibt es zwei Konstruktoren. Das Problem entsteht jedoch, wenn Sie die Duplizierung des Feld-Setup-Codes vermeiden möchten, da schreibgeschützte Felder im Konstruktor initialisiert werden müssen.

Glücklicherweise gibt es eine Lösung: Verwenden Sie die Konstruktorverkettung. Durch Hinzufügen der folgenden Zeile im String-Argument-Konstruktor:

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

Sie können den Integer-Parameterkonstruktor vom String-Parameterkonstruktor aus aufrufen. Dadurch wird die Feldinitialisierung an vorhandenen Code delegiert, sodass keine Duplizierung erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie kann ich Codeduplizierung vermeiden, wenn ich schreibgeschützte Felder in mehreren Konstruktoren initialisiere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage