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 DoubleCrie um procedimento nomeado
AddNumberscom 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 FunctionCrie um procedimento nomeado
SubtractNumberscom uma assinatura que correspondaMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionCrie um procedimento chamado
DelegateTestque usa um delegado como um parâmetro.Este procedimento pode aceitar uma referência a
AddNumbersouSubtractNumbers, porque 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 deAddNumberscomo parâmetro e, novamente, com o delegado deSubtractNumberscomo parâmetro.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubQuando
Testé chamado, ele primeiro exibe o resultado deAddNumbersoperando sobre5e3, que é 8. Em seguida, o resultado deSubtractNumbersatuar sobre9e3é exibido, sendo 6.