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 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 proAddNumbers
jako parametr, a znovu s delegátem proSubtractNumbers
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
na5
a3
, což je 8. Potom se zobrazí výsledek působeníSubtractNumbers
na9
a3
, což je 6.