Delen via


Procedure: Procedures doorgeven 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 een procedure met een gemachtigdeparameter die een verwijzing naar een andere procedure kan maken, die met de AddressOf operator is verkregen.

De 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 met de naam SubtractNumbers met een handtekening die overeenkomt MathOperatormet .

    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, omdat de handtekeningen overeenkomen met de MathOperator handtekening.

    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 eenmaal wordt aanroepen DelegateTest met de gemachtigde voor AddNumbers als parameter en opnieuw met de gemachtigde 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 het handelen op 5 en 3, wat 8 is. Vervolgens wordt het resultaat van SubtractNumbers handelen op 9 en 3 weergegeven, wat 6 is.

Zie ook