最終更新:2009-05-24 (日) 17:20:11 (5451d)
マルチキャストデリゲート
Top / マルチキャストデリゲート
デリゲートには += 演算子を用いることで、複数のメソッドを代入する事が出来ます。 複数のメソッドを代入した状態で、デリゲート呼び出しを行うと、代入した全てのメソッドが呼び出されます。 このように、複数のメソッドを格納した状態のデリゲートのことをマルチキャストデリゲートと呼びます。
using System; delegate void ShowMessageDelegate(string msg); class Callable { internal void ConcreteShowMessage(string msg) { Console.WriteLine(msg); } } class Caller { internal ShowMessageDelegate ShowMessage; internal void CallDelegate() { ShowMessage("hello, from delegate!"); } } class App { static void Main() { Callable callable = new Callable(); Caller caller = new Caller(); caller.ShowMessage = new ShowMessageDelegate(callable.ConcreteShowMessage); Fancy fancy = new Fancy(); caller.ShowMessage += new ShowMessageDelegate(fancy.ShowFancyMessage); caller.CallDelegate(); } } class Fancy { internal void ShowFancyMessage(string msg) { System.Windows.Forms.MessageBox.Show(msg); } }