- 締切済み
コールバックでイベントを使うメリットは何でしょうか
コールバック関数を実行するのに、わざわざイベントを使う利点は何でしょうか。 下記のコードでは、どちらでも大して変わらないように見えますが・・・ 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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- todo36
- ベストアンサー率58% (728/1234)
イベントは複数のメソッドを登録できる。(メリットか?) Componentを継承したクラスであれば、デザイナでイベントを登録できる。 といったところかな。 提示の例ではイベントにするメリットは全くないですね。
お礼
RESありがとうございます。 >イベントは複数のメソッドを登録できる。 イベントを投げる側でフラグを引数として渡して、コールバック側で自分の処理か判断するわけですね。 また、コールバックを登録しなくてもエラーにはなりませんね。