Visual Basic
Visual Basic
Java2 SE 5.0 API
Java2 SE 1.4 API
Java2 EE API
Struts 1.0.2
MSDN2 Library
MySQL 5.1
MySQL 4.1
HTMLリファレンス
CSSリファレンス
JavaScript
基本カラーチャート
カレンダー
 最新PG・講座情報
 最新ニュース
 電子辞書・辞典
ご意見・ご要望はこちらまで

連載

Visual Basic

デリゲートの利用方法


1.デリゲートとは

 デリゲート(Delegate)とはCなどでは関数ポインタとかコールバック関数とか言われるメソッドの参照データです。 辞書では Delegate とは(権限・任務・責任などを)委任する、委譲する、委託するとあり、 ある処理の実行するタイミングを第三者の別クラスに監視させ、委託しておく。実行処理のアドレスを渡して、第三者に実行してもらうということです。

 イベント処理では、ボタンのクリック等の監視を行いながら本来の本作業を進めていては、処理が複雑になり遅くなってしまいます。 そこで、あるクラスにボタンのクリック等の監視を任せ、イベントが発生したら自分が指定したイベント処理を実行してほしいと「デリゲート」します。
 同様にスレッド処理では複数のクラスから起動要求が来た場合、均等にスレッドが呼び出されるようにWindowsに対して「デリゲート」します。

デリゲートでの参照データの仕組み
 

2.デリゲートの記述方法

 まずはデリゲートの全体的な意味は理解して頂けたと思いますが、実際のプログラミングではどのように記述したらよいのでしょうか。
 VBでは何らかのメソッドのアドレスを表現するには AddressOf演算子が利用できます。 この参照データを第三者のWindowsの組み込みクラスか自分のクラスに転送する訳ですが、 この第三者のクラスを Delegate句を付けて表現することができます。 参照データを引数にしてデリゲートオブジェクトを生成すれば、後はデリゲートオブジェクトが監視してくれるということになります。

 それでは上の図の流れをプログラミングで示します。

 
 1: Public Delegate Function デリゲート関数名(ByVal days As Short) As String
 2:
 3: Public Class DelegateTest
 4:     …
 5:     Public Sub xxxxx()
 6:         Dim デリゲートオブジェクト As デリゲート関数名
                                    = New デリゲート関数名(AddressOf 実行メソッド)
 7:         …
 8:         デリゲートオブジェクト.Invoke(days)
 9:         …
10:     End Sub
11:     …
12:     Private Function 実行メソッド(ByVal days As Short) As String
13:         …
14:     End Function
15: End Class
 Ver.6でのコントロール配列のイベントハンドラ
 1行目  :デリゲートの定義。 ここではデリゲートする実行メソッドのシグネーチャを決め、実装はしない。
       (引数、戻り値は実行メソッドの引数、戻り値に合わせる。)
 6行目  :デリゲートの生成。
       (コンストラクタの引数はデリゲートする実行メソッドのアドレス)
 8行目  :実行メソッドの実行を指示(Invoke)。 (何らかのイベント発生(RaiseEvent)でも良い。)
       (引数は実行メソッドへの値)
 12行目 :実行メソッドの定義。 ここではデリゲートの定義でのシグネーチャに従う。

 
 INDEX
  連載 Visual Basic デリゲートの利用方法
1.デリゲートとは
  2.イベント処理
  3.デリゲート部分の記述
Top
Copyright© 2003-2007 FumikiChan All Rights Reserved.
http://www.fumikichan.net/