VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 如何:在 Visual Basic 中将过程传递给另一过程

如何:在 Visual Basic 中将过程传递给另一过程

此示例演示如何使用委托将过程传递给另一个过程。

委托是一种类型,与任何其他类型一样可在 Visual Basic 中使用。AddressOf 运算符如果应用到一个过程名,则返回一个委托对象。

此示例有一个具有委托参数的过程,该委托参数可接受对另一个过程的引用,而引用则是通过 AddressOf 运算符获得的。

创建委托和匹配过程

  1. 创建一个名为 MathOperator 的委托。

     
    VB
    C#
    C++
    F#
    JScript
     
    打印
    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
    
  2. 创建一个名为 AddNumbers 的过程,其参数和返回值与 MathOperator 的参数和返回值匹配,以使签名匹配。

     
    VB
    C#
    C++
    F#
    JScript
     
    打印
    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
    
  3. 创建名为 SubtractNumbers 的过程,其签名与 MathOperator 匹配。

     
    VB
    C#
    C++
    F#
    JScript
     
    打印
    Function SubtractNumbers( 
        ByVal x As Double, 
        ByVal y As Double
    ) As Double
        Return x - y
    End Function
    
    
  4. 创建一个名为 DelegateTest 的过程,它接受一个委托作为参数。

    此过程可接受对 AddNumbers 或 SubtactNumbers 的引用,这是因为它们的签名与 MathOperator 签名匹配。

     
    VB
    C#
    C++
    F#
    JScript
     
    打印
    Sub DelegateTest( 
        ByVal x As Double, 
        ByVal op As MathOperator, 
        ByVal y As Double 
    )
        Dim ret As Double
        ret = op.Invoke(x, y) ' Call the method.
        MsgBox(ret)
    End Sub
    
    
  5. 创建一个名为 Test 的过程,它使用 AddNumbers 的委托作为参数调用 DelegateTest 一次,然后使用 SubtractNumbers 的委托作为参数再次调用。

     
    VB
    C#
    C++
    F#
    JScript
     
    打印
    Protected Sub Test()
        DelegateTest(5, AddressOf AddNumbers, 3)
        DelegateTest(9, AddressOf SubtractNumbers, 3)
    End Sub
    
    

    调用 Test 时,它首先显示 AddNumbers 对 5 和 3 的操作结果,也就是 8。 然后显示 SubtractNumbers 对 9 和 3 的操作结果,也就是 6。

请参见
 
 

任务

How to: Invoke a Delegate Method

参考

AddressOf 运算符
Delegate 语句

其他资源

委托 (Visual Basic)


相关教程