6

メソッド/関数をオーバーライドすると、派生クラスでの実装が基本クラスでの実装から再定義されることを理解しています。

今私を混乱させているのは、ASP.NETのクラスをオーバーライドするとCreateChildControls()(特別な理由なしにランダムに選択した)、VS2008は次のように自動生成します。

protected override void CreateChildControls()
{
   base.CreateChildControls();
}

十分に良いことに、デフォルトの実装は基本クラス'を呼び出すだけですCreateChildControls()

したがって、コードを実行したい場合、方法がわからないので、これを実行するbase.CreateChildControls()必要があります。

protected override void CreateChildControls()
{
   /*My Code Here*/                    
   base.CreateChildControls();
}

または、何を完全に無視しbase.CreateChildControls()て、ただ実行する

protected override void CreateChildControls()
{
   /*My Code Here*/                    
}
4

5 に答える 5

11

それはあなた次第です。一般に、基本クラスのメソッドを呼び出すのは、自分が知らない多くのことを実行する可能性があるためです(特に、制御できないクラスでは、制御しますか?制御します)。基本クラスの「もの」が発生する必要はありません(または発生したくない)場合は、呼び出しを削除できます。

于 2009-07-09T23:58:51.630 に答える
3

動作を完全に置き換えるのか、動作を追加するのかという問題です。

CreateChildControlsのようなものの場合、おそらく基本クラスへの呼び出しを保持します。

于 2009-07-09T23:59:45.497 に答える
1

それはあなたが何をしたいかによります。base.CreateChildControls()メソッドを呼び出してから、メソッドが呼び出される前または後にカスタムアクションを実行する場合は、そうすることができます。

CreateChildControlsが呼び出されたときに何が起こっているかを完全に制御したい場合は、それを呼び出すことを完全に無視することができます。

それがデフォルトでそこにあるという事実はあなたのためのほんの少しのガイダンスです。

于 2009-07-10T00:00:55.883 に答える
0

基本実装を置き換える完了するかによって異なります...ほとんどの場合、基本実装を呼び出す必要があります(メソッドの場合は必ず呼び出す必要がありますCreateChildItems...)

于 2009-07-10T00:04:04.020 に答える
0

テンプレートメソッドパターンを確認することをお勧めします。ライブラリクラスの実装方法については何もできませんが、作成するコードが正しく使用しやすいことを確認するのに役立つ場合があります。

于 2014-08-21T13:17:04.590 に答える