Jak: postupy předat jiné procedury v jazyce Visual Basic
Tento příklad ukazuje, jak použít delegáty předat postup jiný postup.
Delegát je typ, který můžete použít jako libovolný jiný typ v Visual Basic.AddressOf Operátor vrací objekt delegát při použití název procedury.
V tomto příkladu má postup s parametrem delegát může mít odkaz na jiný postup, získané AddressOf operátor.
Vytvořit delegáta a odpovídající postupy
Vytvořit delegáta s názvem MathOperator.
Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double
Vytvořit proceduru s názvem AddNumbers parametrů a vrácené hodnoty, které odpovídají MathOperator, tak, aby odpovídaly podpisy.
Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End Function
Vytvořit proceduru s názvem SubtractNumbers s podpisem, který odpovídá MathOperator.
Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Function
Vytvořit proceduru s názvem DelegateTest , která má jako parametr delegáta.
Tento postup můžete přijmout odkaz na AddNumbers nebo SubtractNumbers, protože jejich podpisy odpovídat MathOperator podpisu.
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
Vytvořit proceduru s názvem Test , který volá DelegateTest jednou s delegátem pro AddNumbers jako parametr a znovu s delegátem pro SubtractNumbers jako parametr.
Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Při Test je volána, nejprve zobrazí výsledek AddNumbers působit na 5 a 3, což je 8.Pak výsledek SubtractNumbers na 9 a 3 je zobrazen, což je 6.
Viz také
Úkoly
Jak: vyvolání metody delegáta (Visual Basic)
Referenční dokumentace
Operátor AddressOf (Visual Basic)