VB.NET - デリゲート(delegate)Advertisementデリゲートとは
デリゲートとは、他のオブジェクトのメソッドを間接的に呼び出すためのオブジェクトのこと。オブジェクト指向の観点からすると賛否両論どちらも存在するが、VB.NETでシステム開発を行う際には必須の概念である。
System.Delegateクラスを基本クラスとするクラスで、従来より存在する関数ポインタのように動作するため、安全な関数ポインタとして記述される。 デリゲートを使用することにより関数レベルでの委譲(コンポジション)を実現することができるため、柔軟な処理を行うことができる。 デリゲートの利用方法
デリゲート宣言の書式
アクセシビリティ Delegate Sub デリゲート名(引数1, 引数2.. ,引数n) アクセシビリティ Delegate Function _ デリゲート名(引数1, 引数2.. ,引数n) As 戻り値型 利用手順1.デリゲートの宣言Public Delegate Sub デリゲート名() 2.デリゲートオブジェクト変数の宣言〜デリゲートオブジェクトの生成 Dim 変数名 As デリゲート名 変数名 = AddressOf クラス名.関数名 3.関数呼び出し 変数名.Invoke AddressOf演算子を使用して委譲先関数のアドレスを取得し(手順2)、Invokeメソッドで関数の呼び出しをおこなう(手順3)。 サンプルコード
Module Module1
' デリゲート
Delegate Sub MyDelegate(ByVal x As String)
' メインクラス
Public Sub Main()
Dim MyProduct As New Product("Robot")
' Test the delegate.
MyProduct.FixProduct()
End Sub
Class Product
Private Name As String
' コンストラクタ
Sub New(ByVal Name As String)
Me.Name = Name
End Sub
' 処理の委譲(コンポジション)
Sub FixProduct()
Dim MyRepair As New Repair
Dim MyDelegate As MyDelegate
' デリゲートオブジェクトの作成
MyDelegate = AddressOf MyRepair.FixProduct
' 処理の呼び出し
MyDelegate.Invoke(Me.Name)
End Sub
End Class
' 修理専門のクラス
Class Repair
Sub FixProduct(ByVal Name As String)
Console.writeLine(Name & " Fixed!")
End Sub
End Class
End Module
Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログールビリヤード |