VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 使用委派来参照函数
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:7609, 日期:2003-08-29
Visual Basic.NET包括了对委派(delegate)的支持,这就提供了安全的函数指针(function pointer)。委派能够被用来在运行期间动态地拾取特定的函数。  

在你声明一个委派的时候,你就要为方法定义一个原型(prototype)。委派会决定自变量的数量和类型,以及返回值,如果有的话。委派所指向的任何方法都必须符合这个特征。

你可以使用下面的代码来声明一个委派:

Private Delegate Sub PresentError(ByValMsg As String)

你也可以定义符合委派特征的多个方法。

Private Sub DisplayMsg(ByValMsg As String)
    MsgBox(Msg)
End Sub

Private Sub WriteMsgToOutput(ByValMsg As String)
    Debug.WriteLine(Msg)
End Sub

要使用委派,你就需要为它创建一个实例,并把真实方法的地址传递给构造函数。这样这个函数就可以通过Invoke方法被调用了。

Dim test As New PresentError(AddressOfDisplayMsg)
test.Invoke("This is a test")

现在调用委派就会在MessageBox信息框里显示上面这条信息。要更改委派所参照的方法,只用简单地更改传递给构造函数的方法就行了。

Dim test As New PresentError(AddressOfWriteMsgToOutput)

现在,调用委派就会把这条信息写到输出窗口里。

委派对于增强你应用程序的扩展能力很有好处。你也可以用它来选择在运行期间所要执行的函数。