JetBrains Rider 2026.1 Help

コードインスペクション:コンストラクター内の仮想メンバー呼び出し

Eric Lippertが この投稿で説明しているように、基本型のイニシャライザーは派生型のイニシャライザーの後に実行されますが、コンストラクターは逆の順序、つまり派生型のコンストラクターが基本型のコンストラクターの後に呼び出されます。 一方、仮想メソッドの呼び出しは常に最も派生型で実行されます。

つまり、基本型のコンストラクターから仮想メンバーを呼び出す場合、派生型のコンストラクターが呼び出される に、派生型のこの仮想メンバーのオーバーライドがそれぞれ実行されます。

想像しているように、派生型のオーバーライドでメンバーが使用されていると、混乱とエラーが発生する可能性があります。

コンストラクター内の仮想呼び出しは、派生型が基本型の何らかの側面を設定できるようにすることを目的としていることがよくあります。 このような仮想メソッドは、実際には、ある値を返し、派生した型の状態に依存しない純粋な関数でなければなりません。 これが当てはまる場合は、そのような関数を静的にして(純粋なので)、その戻り値を protected コンストラクターのパラメーターとして基本型に渡します。

2026 年 6 月 12 日