Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este exemplo mostra como usar delegados para passar um procedimento para outro procedimento.
Um delegado é um tipo que você pode usar como qualquer outro tipo no Visual Basic. O AddressOf
operador retorna um objeto delegado quando aplicado a um nome de procedimento.
Este exemplo tem um procedimento com um parâmetro delegado que pode fazer referência a outro procedimento, obtido com o AddressOf
operador.
Criar o delegado e os procedimentos correspondentes
Criar um delegado chamado
MathOperator
.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double
Crie um procedimento nomeado
AddNumbers
com parâmetros e valor de retorno que correspondam aos deMathOperator
, de modo que as assinaturas coincidam.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End Function
Crie um procedimento nomeado
SubtractNumbers
com uma assinatura que correspondaMathOperator
.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Function
Crie um procedimento chamado
DelegateTest
que usa um delegado como um parâmetro.Este procedimento pode aceitar uma referência a
AddNumbers
ouSubtractNumbers
, porque suas assinaturas correspondem àMathOperator
assinatura.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
Crie um procedimento chamado
Test
que chamaDelegateTest
uma vez com o delegado deAddNumbers
como parâmetro e, novamente, com o delegado deSubtractNumbers
como parâmetro.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Quando
Test
é chamado, ele primeiro exibe o resultado deAddNumbers
operando sobre5
e3
, que é 8. Em seguida, o resultado deSubtractNumbers
atuar sobre9
e3
é exibido, sendo 6.