此範例顯示如何使用委派 (Delegate) 將程序傳遞至其他程序。
委派是可像 Visual Basic 中所有其他型別一樣使用的型別。 AddressOf 運算子會在套用至程序名稱時傳回委派物件。
此範例具有程序,該程序有委派參數且可參考以 AddressOf 運算子所取得的其他程序。
建立委派和相對應的程序
建立名為 MathOperator 的委派。
Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double建立名為 AddNumbers 並具有參數和傳回值的程序,且這些參數和傳回值符合 MathOperator 的參數和傳回值,這樣簽章會相符。
Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End Function建立名為 SubtractNumbers 且具有和 MathOperator 相符的簽章程序。
Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Function建立名為 DelegateTest 且將委派視為參數的程序。
此程序可接受 (Accept) AddNumbers 或 SubtractNumbers 的參考,因為它們的簽章符合 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建立名為 Test 且呼叫一次 DelegateTest 的程序,這個程序將 AddNumbers 的委派做為參數,然後重新將 SubtractNumbers 的委派做為參數。
Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub呼叫 Test 時,會先顯示 5 和 3 的 AddNumbers 結果 (為 8)。 然後會顯示 9 和 3 的 SubtractNumbers 結果 (為 6)。