読み取り専用フィールドに値を入力するコンストラクターが 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
このような:
public Sample(string str) : this(int.Parse(str)) { }