Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Vytvořte delegáta s názvem
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleVytvořte proceduru s názvem
AddNumberss 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 FunctionVytvořte proceduru s názvem
SubtractNumberss podpisem, který odpovídáMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionVytvořte proceduru s názvem
DelegateTest, která přebírá delegáta jako parametr.Tento postup může přijmout odkaz na
AddNumbersneboSubtractNumbers, protože jejich podpisy odpovídajíMathOperatorpodpisu.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 SubVytvořte proceduru s názvem
Test, která voláDelegateTestjednou s delegátem proAddNumbersjako parametr, a znovu s delegátem proSubtractNumbersjako parametr.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubPři zavolání
Testse nejprve zobrazí výsledek působeníAddNumbersna5a3, což je 8. Potom se zobrazí výsledek působeníSubtractNumbersna9a3, což je 6.