Maison > développement back-end > C++ > Comment puis-je éviter la duplication de code lors de l'initialisation de champs en lecture seule dans plusieurs constructeurs ?

Comment puis-je éviter la duplication de code lors de l'initialisation de champs en lecture seule dans plusieurs constructeurs ?

DDD
Libérer: 2025-01-12 11:46:41
original
617 Les gens l'ont consulté

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

Appeler un autre constructeur au sein d'un constructeur

Dans une classe, le constructeur permet d'initialiser les champs lors de la création de l'objet. Dans certains cas, plusieurs constructeurs peuvent fournir des valeurs aux champs en lecture seule. Considérez la classe suivante :

<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>
Copier après la connexion

Il y a deux constructeurs ici. Cependant, le problème survient lorsque vous souhaitez éviter de dupliquer le code de configuration des champs, car les champs en lecture seule doivent être initialisés dans le constructeur.

Heureusement, il existe une solution : utiliser le chaînage de constructeurs. En ajoutant la ligne suivante dans le constructeur d'argument chaîne :

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

Vous pouvez appeler le constructeur de paramètre entier à partir du constructeur de paramètre de chaîne. Cela délègue l’initialisation des champs au code existant, éliminant ainsi le besoin de duplication.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal