あるコンストラクタから別のコンストラクタを呼び出す 質問する

あるコンストラクタから別のコンストラクタを呼び出す 質問する

読み取り専用フィールドに値を入力するコンストラクターが 2 つあります。

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;
}

1 つのコンストラクターは値を直接受け取り、もう 1 つのコンストラクターは計算を行って値を取得し、フィールドを設定します。

ここで問題となるのは、

  1. 設定コードを重複させたくありません。この場合、1 つのフィールドだけが設定されますが、もちろん、複数のフィールドが設定される可能性もあります。
  2. フィールドを読み取り専用にするには、コンストラクターから設定する必要があるため、共有コードをユーティリティ関数に「抽出」することはできません。
  3. あるコンストラクターを別のコンストラクターから呼び出す方法がわかりません。

何か案は?

ベストアンサー1

このような:

public Sample(string str) : this(int.Parse(str)) { }

おすすめ記事