マルチキャストデリゲート Combine vb.net入門

      2017/07/21

マルチキャストデリゲート 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はデリゲートの配列を連結してるみたいですね。

PR



 - vb.netさんぷる

Translate »