C# のコンストラクター チェーン: 読み取り専用フィールドの初期化のソリューション
場合によっては、複数のコンストラクターを使用して readonly
フィールドを初期化する必要があります。 readonly
フィールドにはコンストラクター内でのみ値を割り当てることができるため、コンストラクター間で初期化ロジックを単純に複製することは非効率的で、エラーが発生しやすくなります。 C# は、コンストラクター チェーンというクリーンなソリューションを提供します。
this
コンストラクターの連鎖は、this
キーワードを利用して、あるコンストラクターを別のコンストラクターから呼び出します。 これにより初期化プロセスがリダイレクトされ、冗長なコードが排除されます。
これが例です:
<code class="language-csharp">public class Sample { public Sample(string theIntAsString) : this(int.Parse(theIntAsString)) { } public Sample(int theInt) => _intField = theInt; public int IntProperty => _intField; private readonly int _intField; }</code>
この Sample
クラスは 2 つのコンストラクターを示します。最初のコンストラクターは文字列を受け取り、それを整数に解析してから、2 番目のコンストラクターにチェーンし、解析された整数を渡します。 2 番目のコンストラクターは、readonly
フィールドを直接初期化します。 このアプローチにより、初期化ロジックが一元化された状態が維持され、クラスのインスタンス化方法に柔軟性が提供されます。
コンストラクター チェーンを使用すると、初期化ロジックの重複が回避され、コードがよりクリーンで保守しやすくなり、コードの再利用性が向上し、不整合のリスクが軽減されます。
以上がC# で 1 つのコンストラクターを別のコンストラクターから呼び出して読み取り専用フィールドを初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。