電子書籍の厳選無料作品が豊富!

コールバック関数を実行するのに、わざわざイベントを使う利点は何でしょうか。
下記のコードでは、どちらでも大して変わらないように見えますが・・・

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

A 回答 (1件)

イベントは複数のメソッドを登録できる。

(メリットか?)
Componentを継承したクラスであれば、デザイナでイベントを登録できる。

といったところかな。

提示の例ではイベントにするメリットは全くないですね。
    • good
    • 0
この回答へのお礼

RESありがとうございます。

>イベントは複数のメソッドを登録できる。

イベントを投げる側でフラグを引数として渡して、コールバック側で自分の処理か判断するわけですね。

また、コールバックを登録しなくてもエラーにはなりませんね。

お礼日時:2013/10/01 14:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!