16/01/16 22:12:01.60 nU3glmtt.net
疑似コードで説明すると、例えば
void Convert()
{
処理1;
処理2;
処理3;
}
というメソッドがあるとする(>>733と同じような例だけど…)。
処理1と3は必ず固定の処理。処理2は、場合によって処理をいろいろ切り替えたいとする。
(ある場合は、処理2のところでMethodA()を呼びたい。また別の場合にはMethodB()を呼びたい、とか。)
こんなとき、処理2の部分で、デリゲート型変数fを使って、
void Convert(デリゲート f)
{
処理1;
f();
処理3;
}
と書けばいいい。
先に言ったように、デリゲートとはメソッドを入れる変数のこと。つまり、Convert()は、
「引数としてメソッドを受け取るメソッド」ということになる。
Convert()の呼び出し元では、
デリゲート f = MethodA;
Convert(f);
とする。これで、処理2のところでMethodA()が呼ばれるようになる。
MethodB()を呼びたいときは、かわりに
デリゲート f = MethodB;
とすればいい。
(続く)