• 締切済み

コールバックでイベントを使うメリットは何でしょうか

コールバック関数を実行するのに、わざわざイベントを使う利点は何でしょうか。 下記のコードでは、どちらでも大して変わらないように見えますが・・・ Module modMain Sub Main() Dim myRaise As clsMyRaiseEvent = New clsMyRaiseEvent 'イベントを使った使用法 AddHandler myRaise.MyEvent, New clsMyRaiseEvent.dlgMyEvent(AddressOf MyCallBack) myRaise.Test1() '関数ポインタ的な使用法 myRaise.callback = New clsMyRaiseEvent.dlgMyEvent(AddressOf MyCallBack) myRaise.Test2() Console.ReadLine() End Sub 'コールバック関数 Private Sub MyCallBack(ByVal aEx As Exception) Console.WriteLine("Called") End Sub End Module Public Class clsMyRaiseEvent Public Delegate Sub dlgMyEvent(ByVal aEx As Exception) Public Event MyEvent As dlgMyEvent 'デリゲート型のイベント Public callback As dlgMyEvent Public Sub Test1() RaiseEvent MyEvent(New Exception) End Sub Public Sub Test2() callback(New Exception) End Sub End Class

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

イベントは複数のメソッドを登録できる。(メリットか?) Componentを継承したクラスであれば、デザイナでイベントを登録できる。 といったところかな。 提示の例ではイベントにするメリットは全くないですね。

o_jiji
質問者

お礼

RESありがとうございます。 >イベントは複数のメソッドを登録できる。 イベントを投げる側でフラグを引数として渡して、コールバック側で自分の処理か判断するわけですね。 また、コールバックを登録しなくてもエラーにはなりませんね。