Visual Basic でなんとなくイベントとデリゲート その4。 - デリゲートとは? -
なんとなく (はしょりすぎ。
前回の関数ポインタについてはながせさんがエントリしてくれました。→ながせろぐ:関数ポインタのみ!
ながせさんのお話は多分緑色のやつのことです、多分。
というわけで、今回は「Address Of 'AddressOf'」ということでAddressOf 演算子のお話です。ちなみに「Address Of 'AddressOf'」ってちょっと気に入っています。(どうでもいいですね。)
これですよ、これ↓
MSDN:AddressOf 演算子
えっと、リンク先読むだけですってなると元も子もないのでちゃんと書きます。ここは私のお勉強空間ですからね♪
AddressOf 演算子により、procedurename で指定された関数を参照する関数デリゲートが作成されます。
ふむ、どうやら AddressOf 演算子 はデリゲートを生成する演算子のようですね。ってことは・・・その4で書いたこれ↓
showMessageMethod = New ShowMessageDelegate(AddressOf Program.ShowBufferinMessage)
わざわざShowMessageDelegate デリゲートのインスタンスを生成してそいつにAddressOf Program.ShowBufferinMessageってしなくてもいいってこと?だってAddressOf
Program.ShowBufferinMessage ってのがデリゲートなんだし。
つまりその4で書いたコードは以下のようにも書けますよっと。
Option Compare Binary
Option Explicit On
Option Strict On
Public Delegate Sub ShowMessageDelegate(ByVal targetName As String)
Public Class Program
Public Shared Sub Main()
Dim showMessageMethod As ShowMessageDelegate
showMessageMethod = AddressOf Program.ShowBufferinMessage
showMessageMethod.Invoke("とりこびと")
End Sub
Private Shared Sub ShowBufferinMessage(ByVal targetName As String)
Console.WriteLine("{0} の半分はやさしさで出来ています。", targetName)
End Sub
End Class
次回:「とりこびとの半分はやさしさで出来ています・・・が、もう半分は!!?」
引き続き、デリゲートをなんとなく触ってみます。