ホームページ > バックエンド開発 > C++ > 複数のコンストラクターで読み取り専用フィールドを初期化するときにコードの重複を回避するにはどうすればよいですか?

複数のコンストラクターで読み取り専用フィールドを初期化するときにコードの重複を回避するにはどうすればよいですか?

DDD
リリース: 2025-01-12 11:46:41
オリジナル
617 人が閲覧しました

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

コンストラクター内で別のコンストラクターを呼び出す

クラスでは、オブジェクトの作成時にコンストラクターを使用してフィールドを初期化します。場合によっては、複数のコンストラクターが読み取り専用フィールドに値を提供することがあります。次のクラスについて考えてみましょう:

<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>
ログイン後にコピー

ここには 2 つのコンストラクターがあります。ただし、読み取り専用フィールドはコンストラクターで初期化する必要があるため、フィールド設定コードの重複を避けたい場合に問題が発生します。

幸いなことに、コンストラクターチェーンを使用するという解決策があります。文字列引数コンストラクターに次の行を追加します:

<code class="language-c#">public Sample(string str) : this(int.Parse(str)) { }</code>
ログイン後にコピー

文字列パラメータ コンストラクタから整数パラメータ コンストラクタを呼び出すことができます。これにより、フィールドの初期化が既存のコードに委任され、重複する必要がなくなります。

以上が複数のコンストラクターで読み取り専用フィールドを初期化するときにコードの重複を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート