前章でも書いたように、デリゲートには複数のメソッドを登録することができます。
これをデリゲートのマルチキャストといいます。ただし、マルチキャストできるのは
戻り値がvoid型の時のみです。
マルチキャストする方法は簡単です。デリゲートのインスタンスに+=演算子で別のデリゲートのインスタンスを加えます。-=演算子で取り除くこともできます。
では、サンプルを見てみましょう。
// multicast01.cs
using System;
delegate void MD();
class multicast01
{
void show1()
{
Console.WriteLine("show1です");
}
void show2()
{
Console.WriteLine("show2です");
}
void show3()
{
Console.WriteLine("show3です");
}
public static void Main()
{
multicast01 m = new multicast01();
MD md1 = new MD(m.show1);
MD md2 = new MD(m.show2);
MD md3 = new MD(m.show3);
MD md;
md = md1;
md += md2;
md += md3;
md();
Console.WriteLine("----------");
md -= md2;
md();
Console.WriteLine("----------");
md -= md1;
md();
Console.WriteLine("----------");
md += md3;
md += md3;
md();
}
}
サンプルからわかるように、メソッドを重複して登録することもできます。実行結果は次のようになります。
Update 21/Sep/2006 By Y.Kumei