Sdílet prostřednictvím


Postupy: Předání procedur jinému postupu v jazyce Visual Basic

Tento příklad ukazuje, jak pomocí delegátů předat proceduru jinému postupu.

Delegát je typ, který můžete použít jako jakýkoli jiný typ v jazyce Visual Basic. Operátor AddressOf vrací objekt typu delegát, když je použit na název procedury.

Tento příklad obsahuje proceduru s parametrem delegáta, který může odkazovat na jinou proceduru získanou pomocí operátoru AddressOf .

Vytvořte delegáta a odpovídající postupy

  1. Vytvořte delegáta s názvem MathOperator.

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. Vytvořte proceduru s názvem AddNumbers s parametry a návratovou hodnotou, která odpovídá MathOperatorparametrům , aby se podpisy shodovaly.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. Vytvořte 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
    
  4. Vytvořte proceduru s názvem DelegateTest , která přebírá delegáta jako parametr.

    Tento postup může přijmout odkaz na AddNumbers nebo SubtractNumbers, protože jejich podpisy odpovídají 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
    
  5. Vytvořte 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 zavolání Test se nejprve zobrazí výsledek působení AddNumbers na 5 a 3, což je 8. Potom se zobrazí výsledek působení SubtractNumbers na 9 a 3, což je 6.

Viz také