デリゲートは、メソッドを抽象化したもので、1つのメソッドから成るインタフェースに近いものですが、専用の型を用意することでより使いやすくなっています。
デリゲートの使い方は以下の通り、簡単です。
static void TimerTest() { TimerTestPublish pub = new TimerTestPublish(); TimerTestSubscriber a = new TimerTestSubscriber("a"); TimerTestSubscriber b = new TimerTestSubscriber("b"); // ↓ デリゲートを作成して追加 pub.Fire += new TimerTestPublish.FireHandler(a.Fire); // ↓ デリゲートを作成して追加 pub.Fire += new TimerTestPublish.FireHandler(b.Fire); pub.Run(); Console.WriteLine("Finished"); // ↓ event では エラー pub.Fire = new TimerTestPublish.FireHandler(a.Fire); // ↓ event では エラー pub.Fire(); } class TimerTestPublish { public delegate void FireHandler(); // デリゲートの型宣言 public FireHandler Fire; // デリゲートのインスタンス変数 // public event FireHandler Fire; public void Run() { for (int i = 0; i < 3; ++ i) { Thread.Sleep(1000); if (Fire != null) Fire(); // デリゲートの呼び出し方法 } } }; class TimerTestSubscriber { private string name; public TimerTestSubscriber(string name) { this.name = name; } public void Fire() { Console.WriteLine(name + " - Fired"); } };
デリゲートは最初 null ですが、+= でデリゲートを追加できるようです。
デリゲートを加算すると、両方のデリゲートを呼び出すデリゲートになります。
このサイトのページへのリンクは自由に行っていただいてかまいません。
このサイトで公開している全ての画像、プログラム、文書の無断転載を禁止します。
ここをクリック
すると表示されるページから作者へメールで連絡できます。