Heim >Backend-Entwicklung >C++ >Wie kann ich in C# einen Konstruktor von einem anderen aufrufen, um schreibgeschützte Felder zu initialisieren?

Wie kann ich in C# einen Konstruktor von einem anderen aufrufen, um schreibgeschützte Felder zu initialisieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-12 11:52:43533Durchsuche

How Can I Call One Constructor from Another in C# to Initialize Readonly Fields?

Konstruktorverkettung in C#: Eine Lösung für die schreibgeschützte Feldinitialisierung

Manchmal müssen Sie readonly Felder mit mehreren Konstruktoren initialisieren. Da readonly-Feldern nur Werte innerhalb eines Konstruktors zugewiesen werden können, ist das einfache Duplizieren der Initialisierungslogik über Konstruktoren hinweg ineffizient und fehleranfällig. C# bietet eine saubere Lösung: Konstruktorverkettung.

Die Kraft von this

Konstruktorverkettung nutzt das Schlüsselwort this, um einen Konstruktor von einem anderen aufzurufen. Dadurch wird der Initialisierungsprozess umgeleitet und redundanter Code eliminiert.

Hier ist ein Beispiel:

<code class="language-csharp">public class Sample
{
    public Sample(string theIntAsString) : this(int.Parse(theIntAsString)) { }

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

    private readonly int _intField;
}</code>

Diese Sample-Klasse demonstriert zwei Konstruktoren. Der erste Konstruktor nimmt eine Zeichenfolge, analysiert sie in eine Ganzzahl und verkettet dann an den zweiten Konstruktor, wobei er die analysierte Ganzzahl übergibt. Der zweite Konstruktor initialisiert direkt das Feld readonly. Dieser Ansatz hält die Initialisierungslogik zentralisiert und bietet gleichzeitig Flexibilität bei der Instanziierung der Klasse.

Die Verwendung der Konstruktorverkettung fördert einen saubereren und wartbareren Code, indem doppelte Initialisierungslogik vermieden wird, wodurch die Wiederverwendbarkeit des Codes verbessert und das Risiko von Inkonsistenzen verringert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich in C# einen Konstruktor von einem anderen aufrufen, um schreibgeschützte Felder zu initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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