Delen via


Zo geef je procedures door aan een andere procedure in Visual Basic

In dit voorbeeld ziet u hoe u gemachtigden gebruikt om een procedure door te geven aan een andere procedure.

Een gemachtigde is een type dat u kunt gebruiken zoals elk ander type in Visual Basic. De AddressOf operator retourneert een gedelegeerde-object wanneer dit wordt toegepast op een procedurenaam.

In dit voorbeeld is er een procedure met een delegate-parameter die een verwijzing naar een andere procedure kan aannemen, verkregen met de AddressOf-operator.

Gedelegeerde en overeenkomende procedures maken

  1. Maak een gemachtigde met de naam MathOperator.

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. Maak een procedure met de naam AddNumbers parameters en retourwaarde die overeenkomen met die van MathOperator, zodat de handtekeningen overeenkomen.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. Maak een procedure genaamd SubtractNumbers met een handtekening die overeenkomt met MathOperator.

    Function SubtractNumbers( 
        ByVal x As Double, 
        ByVal y As Double
    ) As Double
        Return x - y
    End Function
    
  4. Maak een procedure met de naam DelegateTest die een gemachtigde als parameter neemt.

    Deze procedure kan een verwijzing naar AddNumbers of SubtractNumbers accepteren, omdat hun signaturen overeenkomen met de MathOperator signatuur.

    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. Maak een procedure met de naam Test die DelegateTest eenmaal aanroept met de delegate voor AddNumbers als parameter, en opnieuw met de delegate voor SubtractNumbers als parameter.

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

    Wanneer Test wordt aangeroepen, wordt eerst het resultaat weergegeven van AddNumbers die worden toegepast op 5 en 3, wat 8 oplevert. Vervolgens wordt het resultaat van SubtractNumbers handelen op 9 en 3 weergegeven, wat 6 is.

Zie ook