Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 delegate que pode fazer referência a outro procedimento, obtido com o AddressOf operador.
Criar os procedimentos de delegação e correspondência
Crie um delegado chamado
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleCrie um procedimento nomeado
AddNumberscom parâmetros e valor de retorno que correspondam aos deMathOperator, para que as assinaturas coincidam.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionCrie um procedimento nomeado
SubtractNumberscom uma assinatura que corresponda aoMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionCrie um procedimento chamado
DelegateTestque tome um delegado como parâmetro.Este procedimento pode aceitar uma referência a
AddNumbersouSubtractNumbers, porque as suas assinaturas correspondem àMathOperatorassinatura.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 SubCrie um procedimento chamado
Testque chamaDelegateTestuma vez com o delegado paraAddNumberscomo um parâmetro e novamente com o delegado paraSubtractNumberscomo um parâmetro.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubQuando
Testé chamado, ele primeiro exibe o resultado deAddNumbersagir sobre5e3, que é 8. Em seguida, o resultado deSubtractNumbersagir sobre9e3é exibido, que é 6.