マルチキャストデリゲート Combine
マルチキャストデリゲート
一つのデリゲート変数に複数のデリゲートを登録します。
どうするかというとSystem.Delegate.Combineメソッドを使用します。
Delegateクラスのメソッドですね。
Combineとは
Combineは日本語読みでコンバインです。
なんかかっこいいですね(笑)
意味は結合するとかという意味です・
結合するということは一つになる感じがしますね。
どういうことというと複数登録と書きましたが
個別にメソッドを使用できるわけではありません。
メソッドが3つあるとして3つ登録したら
1回のデリーゲートの処理で登録されるいる
複数のメソッドが実行されます。
実行される順番は引数に指定した順番で実行されます。
デリゲート変数 = System.Delegate.Combine(デリゲート変数1,デリゲート変数2)
引数の数は決まってません。
Combineだから2個以上でなければ意味ないですね。意味ないですね。
サンプルソース
Public Class Form1
Delegate Sub sample()
Sub Delegatesample()
MsgBox(“佐藤です。”)
End Sub
Sub Delegatesample1()
MsgBox(“鈴木です。”)
End Sub
Sub Delegatesample2()
MsgBox(“斉藤です。”)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim sampleDelegate As sample = AddressOf Delegatesample
Dim sampleDelegate1 As sample = AddressOf Delegatesample1
Dim sampleDelegate2 As sample = AddressOf Delegatesample2
sampleDelegate = System.Delegate.Combine(sampleDelegate, sampleDelegate1, sampleDelegate2)
sampleDelegate()
End Sub
End Class
実行結果は
佐藤です。
鈴木です。
斉藤です。
が表示されます。
この程度だと配列使ったほうがいいですね。
あくまでサンプルなので。
複数の違う処理を関数で分けている時など。
一つに長く書いてしまうとどこでバグってるか
わからないしテストもやりにくいですし。
Combineはデリゲートの配列を連結してるみたいですね。