|
フォームの追加でMyFormクラスを追加して、デザイナの画面でフォームをダブルクリックするとMyForm_Loadが出来ちゃうじゃないですか。 それでこんなこと考えてたんですけど、 > この場合、コストではなく、メソッドの目的で選んでください。 ですよねー。いや、すんません。 大前提ですよねー。なんも考えてませんでした。
> delegateの呼び出しは比較的重いですし、特にControlのイベントは単なるdelegateの呼び出しではなく、ディクショナリからの検索という操作が入ります。 > ああそうそう、この操作は別にLoadイベントハンドラが登録されてなくても起こる(登録されているかどうか検索する)わけですから、OnLoadだけでも一緒といえば一緒ですね。 FormクラスのOnLoad関数がどう実装されているかは知りませんが、もし class Form : ほげほげ { public event EventHandler Load; protected virtual void OnLoad(EventArgs e) { if (Load != null) Load(this, e); }
// その他実装の詳細... } ってな感じになってるとしたら、Loadイベントにハンドラが登録されているかどうかは上記のようなif文だけで済むんじゃないかなと思います。 あくまで推測ですが。 んでさらに私の思い込み(ヲイ!)では、Loadがnullじゃなかったら、登録されているハンドラを片っ端から実行して回るイメージです。 あ、そうだとしたら、!=演算子がどう実装されているか問題ですね。!=演算のコストが大きければ元も子も無いですね。 そんなこんなで、ディクショナリにする意味もよく理解できていません。 気が向いたらで構いません、その辺のことに関してもう少しお話を伺いたいです。
書き込みありがとうございました。 引き続き、書き込みは大歓迎です。
|