骨のダイスを転がそう
2009-10-31
_ [.Net] .Net Framework の delegate
delegate の役割と、その一例としてのイベント
ようやく見えてきた。
メソッドの一部の動作だけを差し替えしたいときとかに使うのか。(というか、そういう風にも使える、というモノのようだけど)
イベントハンドラへの動作の登録も、別にメソッドを作った上で登録しなければいけなくて、面倒臭かったんだけど、ラムダ式で、個別のメソッド登録が不要となった。
これで、ようやく何をやっているのか、が見えてきた。
* イベントが発生するクラスには、public event ……等としてイベントハンドラを登録する。実体は、オブジェクトと EventArgs の引数を取る delegate 。
* イベントの影響を受けるクラスで、イベント発生元のイベントハンドラに、自分のクラスのメソッドや、ラムダ式を登録して動作を定義する。
* イベントハンドラに登録するときは、"+=" を使用すれば、1つのイベントに複数の動作を登録できる。
* event の仕組み実現のために delegate を使用するが、そのためだけにあるものではない。
_ 高階関数、という言葉があるけど、今まで上手い使い方の実例みたいなものが分からなっかた。それがようやく分かってきた。
[ツッコミを入れる]