- - Delegates
VB , Microsoft
, , .
(pointer variable pointer) ,
. , (target) , , .
Integer, , Integer Integer .
. (, , Object String ; .e.,
.)
, ,
. , (function pointer). (callback functions).
, Windows API
, EnumFontFamiliesEx:
Public Declare Function EnumFontFamiliesEx
Lib "gdi32" Alias "EnumFontFamiliesExA" ( ByVal hdc As
Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, ByVal lParam As Long,
ByVal dw As Long) As Long
,
, callback function. ,
Windows ,
. (callback function):
Public Function EnumFontFamExProc(ByVal lpelfe As Long, ByVal
lpntme As Long, ByVal FontType As Long, ByRef lParam As Long) As Long
EnumFontFamiliesEx,
, .
VB AddressOf.
AddressOf VB 6 API .
VB .NET, AddressOf (delegate):
, ,
.
. : (delegate) e Delegate class MulticastDelegate class. ,
.
. VB .NET,
. ,
VB .NET (handlers). VB .NET
( AddHandler)
,
.
Delegate MulticastDelegate . (delegate object) :
Target ,
.
Method MethodInfo ,
.
Invoke .
, Delegate , MulticastDelegate .
(Simple Delegates)
. (function definition)
.
(Multicast Delegates)
, ,
. (signature)
.
.
:
Public Class Class1
Public Sub AMethod(ByVal s
As String)
Msgbox(s)
End Sub
End Class
Windows Form, (single cast)
, :
Delegate Sub
ADelegate(ByVal s As String)
AMethod Class1:
Protected Sub
Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
MyBase.Click
' Class1
Dim obj As New Class1( )
' - delegate
Dim delg As ADelegate
' delegate,
delg = New ADelegate(AddressOf
obj.AMethod)
' , Invoke method
delg.Invoke("testmethod")
End Sub
(delegate class constructor)
:
delg = New
ADelegate(TargetObject, PointerToMethodOfObject)
Visual Basic , VB
:
delg = New
ADelegate(AddressOf obj.AMethod)