ふたつめの Delegate。

検索てたら@ITの記事がひっかかったのでリンク。
@IT:改訂版 プロフェッショナルVB.NETプログラミング:Chapter 11 デリゲート

リンク先のPage1だけチラッと見てメモる。


[Visual Basic]

Imports System

Public NotInheritable Class Program


' えんとりぽいんとぉ〜!
Public Shared Sub Main(ByVal args As String())

Dim method As ShowMessageDelegate

If args(1) = "JoJo" Then

' ジョジョへのデリゲート
method = New ShowMessageDelegate(AddressOf Program.ShowJoJoMessage)

ElseIf args(1) = "Bufferin" Then

' バファリンへのデリゲート
method = New ShowMessageDelegate(AddressOf Program.ShowBufferinMessage)

ElseIf args(1) = "Caesar" Then

' ジュリアス・シーザーへのデリゲート
method = New ShowMessageDelegate(AddressOf ShowCaesarMessage)

End If

Program.ShowMessage(args(0), method)

End Sub


' 引数にあるメソッドで実際に実行するメソッド
Private Shared Sub ShowMessage(ByVal targetName As String, ByVal method As ShowMessageDelegate)

method(targetName)

End Sub


' メッセージを表示する Delegate
Private Delegate Sub ShowMessageDelegate(ByVal targetName As String)


' ShowMessageDelegate に突っ込むメソッド。シグニチャは同じなのです。
Private Shared Sub ShowJoJoMessage(ByVal targetName As String)

Console.WriteLine("さすが{0}! おれたちにできない事を平然とやってのけるッ そこにシビれる! あこがれるゥ! ", targetName)

End Sub


' ShowMessageDelegate に突っ込むメソッド。シグニチャは同じなのです。
Private Shared Sub ShowBufferinMessage(ByVal targetName As String)

Console.WriteLine("{0} の半分はやさしさで出来ています。", targetName)

End Sub



' ShowMessageDelegate に突っ込むメソッド。シグニチャは同じなのです。
Private Shared Sub ShowCaesarMessage(ByVal targetName As String)

Console.WriteLine("{0} 、お前もか!", targetName)

End Sub


End Class

ふむふむ・・・なるほどね。