Sdílet prostřednictvím


Postupy: Předání procedur jiné proceduře 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 vrátí objekt delegáta při 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ření delegáta a odpovídajících postupů

  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 jako AddNumbers parametr a znovu s delegátem jako SubtractNumbers parametrem.

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

    Při Test zavolání se nejprve zobrazí výsledek činu AddNumbers5 a 3, což je 8. Potom se zobrazí výsledek činu SubtractNumbers9 a 3 zobrazí se, což je 6.

Viz také