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ů
Vytvořte delegáta s názvem
MathOperator
.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double
Vytvořte proceduru s názvem
AddNumbers
s parametry a návratovou hodnotou, která odpovídáMathOperator
parametrům , aby se podpisy shodovaly.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End Function
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
Vytvořte proceduru s názvem
DelegateTest
, která přebírá delegáta jako parametr.Tento postup může přijmout odkaz na
AddNumbers
neboSubtractNumbers
, 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
Vytvořte proceduru s názvem
Test
, která voláDelegateTest
jednou s delegátem jakoAddNumbers
parametr a znovu s delegátem jakoSubtractNumbers
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 činuAddNumbers
5
a3
, což je 8. Potom se zobrazí výsledek činuSubtractNumbers
9
a3
zobrazí se, což je 6.