コンストラクター内で別のコンストラクターを呼び出す
クラスでは、オブジェクトの作成時にコンストラクターを使用してフィールドを初期化します。場合によっては、複数のコンストラクターが読み取り専用フィールドに値を提供することがあります。次のクラスについて考えてみましょう:
<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 サイトの他の関連記事を参照してください。