c#を攻略しよう

c#

デリゲート

デリゲートは、メソッドへの参照を格納するオブジェクトのことです。解説文だけでは、わかりづらいと思いますので、早速、サンプルプログラムを見ていきましょう。サンプルプログラムは、windowsアプリケーション用のコードを使います。

[TOP]

 

namespace WindowsApplication1
{
    delegate void Delg( ); //デリゲートの宣言

    public class X
    {
         public void C( )
         {
              MessageBox.Show("C");
         }
    }

    public partial class Form1 : Form
    {
         static void A( )
         {
              MessageBox.Show("A");
         }

        static void B()
        {
              MessageBox.Show("B");
        }

        public Form1()
        {
              InitializeComponent();
              Delg del;
              del = new Delg(A); //デリゲートにメソッドAの参照を代入
              del += new Delg(B); //デリゲートにメソッドBの参照を追加
              X x = new X();
              del += new Delg(x.C); //デリゲートにメソッドCの参照を追加
              del();
        }
    }
}

デリゲートを利用する際は、先頭でdelegateと宣言し、戻り値 名前(引数)の順に指定します。
デリゲートに追加するメソッドは、デリゲートと同じ、戻り値、引数でなければなりません。

デリゲートのオブジェクトをnew演算子を使って生成し、コンストラクタへの引数に追加するメソッドを指定します。
さらにメソッドを追加するには、+演算子を使って追加します。
デリゲートからメソッドを削除するには、−演算子を使って削除します。
例: デリゲートからメソッドB を削除するには、del -= new Delg(B); のように記述します。

上記サンプルプログラムを実行すると、
ウィンドウズフォームが表示される前に、メッセージボックスがA→B→Cの順にが表示されます。

戻る

※当サイトは、リンクフリーです。