HOW TO:在 Visual Basic 中將程序傳遞至其他程序
更新:2007 年 11 月
此範例顯示如何使用委派 (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 或 SubtactNumbers 的參考,因為它們的簽章符合 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)。