英語版: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html
これは、よく知られている Page_Load() メソッドです。実際、これはイベント ハンドラーであり、System.Web.UI.Page で定義された Load イベントがトリガーされると実行を開始します。
// イベントハンドラを使用する
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
// ここのロジック
}
これは、System.Web.UI.Page クラスの OnLoad() メソッドのオーバーライドです。 // オーバーライドを使用する
protected オーバーライド void OnLoad(EventArgs e)
{
// ここのロジック
Base.OnLoad(e);
}
上記のどちらの方法でも同じ機能を実現できますが、Override メソッドを使用することをお勧めします。
まず、イベント処理メカニズムは、独立したオブジェクト間の通信を実装するために使用されます。たとえば、ボタンがクリックされると、ページはイベント処理メカニズムを通じてこのメッセージを学習し、処理できます。ただし、この例では、Load イベントは System.Web.UI.Page で定義されており、それ自体がページの一部です。クラス内からイベントを発行し、その後イベント自体を処理するのは奇妙です。
次に、効率の点で、イベント処理はオーバーライドほど優れていません。これは .NET Framework の実装によって決定され、それは誰もが知っています。
また、イベントを使用する場合、イベントハンドリングメソッドの添付とイベントハンドリング関数自体の定義の 2 か所を保守する必要があります。 ASP.NET 2.0 ではすでにいくつかの事前定義されたイベント処理メソッド名が提供されていますが、依然として多くの開発者が ASP.NET 1.1 を使用しています。 Override を使用する場合、必要なのは Override 関数自体を保守することだけです。
もちろん、イベント処理メカニズムには独自の利点もあります。たとえば、実行時にイベント処理メソッドを指定するのが簡単で、各地に分散された複数のイベント処理メソッドを順番に実行できます。ただし、ASP.NET ページではこれらの機能は使用しません。ロードされるページの動作を定義するメソッドが常にあり、ページ上に複数の Page_Load() メソッドが表示されることはありません。
より一般的に言えば、ASP.NET ページだけでなく、他の状況でも可能な限りイベントの代わりにオーバーライドを使用する必要があります。
Override を使用するときは、基本クラスのメソッドを呼び出すことを忘れないように注意してください (Visual Studio が自動的に呼び出します)。
出典: Dflying Chen ブログ