最終更新:2009-05-24 (日) 17:20:11 (5443d)  

マルチキャストデリゲート
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);
  }
}