1. ホーム
  2. c#

[解決済み] あるコンストラクタを別のコンストラクタから呼び出す

2022-03-21 20:31:35

質問

読み取り専用フィールドに値を供給する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つではありません。
  2. フィールドを読み取り専用にするには コンストラクタから設定するため 共有のコードを ユーティリティ関数
  3. を呼び出す方法がわかりません。 コンストラクタから別のコンストラクタを呼び出すことができます。

何かアイデアはありますか?

解決方法は?

このように。

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