如何:在 Visual Basic 中將程序傳遞至其他程序

此範例示範如何使用委派,將一個程序傳遞至另一個程序。

委派是一種類型,使用方式就像 Visual Basic 中的其他任何類型一樣。 運算子 AddressOf 會在套用至程序名稱時,傳回委派物件。

此範例的程序有一個委派參數,其會參考使用 AddressOf 運算子取得的另一個程序。

建立委派以及比對程序

  1. 建立名稱為 MathOperator 的委派。

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. 建立名稱為 AddNumbers 的程序,其有參數以及符合 MathOperator 的傳回值,讓特徵標記相符。

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. 建立名稱為 SubtractNumbers 的程序,而其特徵標記與 MathOperator 相符。

    Function SubtractNumbers( 
        ByVal x As Double, 
        ByVal y As Double
    ) As Double
        Return x - y
    End Function
    
  4. 建立名稱為 DelegateTest 的程序,其將委派視為參數。

    此程序可接受對 AddNumbersSubtractNumbers 的參考,因為其特徵標記與 MathOperator 特徵標記相符。

    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 的程序,其會呼叫一次 DelegateTest,其取 AddNumbers 委派為一參數,而且取 SubtractNumbers 委派也為一參數。

    Protected Sub Test()
        DelegateTest(5, AddressOf AddNumbers, 3)
        DelegateTest(9, AddressOf SubtractNumbers, 3)
    End Sub
    

    呼叫 Test 時,會先顯示對 53 進行的 AddNumbers 結果,也就是 8。 然後會顯示對 93 進行的 SubtractNumbers 結果,也就是 6。

另請參閱