Sugerir tradução
 
Outras sugestões:

progress indicator
Sem sugestões.
Clique para classificar e enviar comentários
MSDN
Biblioteca MSDN
Visual Studio 2008
Visual Studio
Visual Basic
 Como: PASS procedimentos como outro...

  Ativar exibição de largura de banda baixa
Exibir Conteúdo: Lado a LadoExibir Conteúdo: Lado a Lado
Este conteúdo foi traduzido automaticamente e pode ser editado pelos membros da comunidade. Para melhorar a qualidade da tradução, clique no link Editar associado à frase que deseja modificar.
Visual Basic Programming Guide
How to: Pass Procedures to Another Procedure in Visual Basic

This example shows how to use delegates to pass a procedure to another procedure.

A delegate is a type that you can use like any other type in Visual Basic. The AddressOf operator returns a delegate object when applied to a procedure name.

This example has a procedure with a delegate parameter that can take a reference to another procedure, obtained with the AddressOf operator.

Create the delegate and matching procedures

  1. Create a delegate named MathOperator.

    Visual Basic
    Delegate Function MathOperator( _
        ByVal x As Double, _
        ByVal y As Double _
    ) As Double
    
    
  2. Create a procedure named AddNumbers with parameters and return value that match those of MathOperator, so that the signatures match.

    Visual Basic
    Function AddNumbers( _
        ByVal x As Double, _
        ByVal y As Double _
    ) As Double
        Return x + y
    End Function
    
    
  3. Create a procedure named SubtractNumbers with a signature that matches MathOperator.

    Visual Basic
    Function SubtractNumbers( _
        ByVal x As Double, _
        ByVal y As Double _
    ) As Double
        Return x - y
    End Function
    
    
  4. Create a procedure named DelegateTest that takes a delegate as a parameter.

    This procedure can accept a reference to AddNumbers or SubtactNumbers, because their signatures match the MathOperator signature.

    Visual Basic
    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
    
    
  5. Create a procedure named Test that calls DelegateTest once with the delegate for AddNumbers as a parameter, and again with the delegate for SubtractNumbers as a parameter.

    Visual Basic
    Protected Sub Test()
        DelegateTest(5, AddressOf AddNumbers, 3)
        DelegateTest(9, AddressOf SubtractNumbers, 3)
    End Sub
    
    

    When Test is called, it first displays the result of AddNumbers acting on 5 and 3, which is 8. Then the result of SubtractNumbers acting on 9 and 3 is displayed, which is 6.

Guia de programação Visual Basic 
Como: PASS procedimentos como outro procedimento no Visual Basic

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 em Visual Basic. O operador AddressOf retorna um objeto delegado quando aplicado a um nome de procedimento.

Este exemplo tem um procedimento um parâmetro delegado que pode receber uma refer6encia para outro procedimento, obtida com o operador AddressOf.

Crie o delegado e procedimentos correspondentes.

  1. Cria um delegado de nome MathOperator.

    Visual Basic
    Delegate Function MathOperator( _
        ByVal x As Double, _
        ByVal y As Double _
    ) As Double
    
    
  2. Crie um procedimento de nome AddNumbers com parâmetros e valor de retorno que correspondem àqueles do MathOperator, de modo que as assinaturas coincidam.

    Visual Basic
    Function AddNumbers( _
        ByVal x As Double, _
        ByVal y As Double _
    ) As Double
        Return x + y
    End Function
    
    
  3. Crie um procedimento de nome SubtractNumbers com uma assinatura que corresponde ao MathOperator.

    Visual Basic
    Function SubtractNumbers( _
        ByVal x As Double, _
        ByVal y As Double _
    ) As Double
        Return x - y
    End Function
    
    
  4. Crie um procedimento de nome DelegateTest que tome um delegado como parâmetro.

    Este procedimetno pode aceitar uma referência a AddNumbers ou SubtactNumbers, porque suas assinaturas correspondem à assinatura do MathOperator.

    Visual Basic
    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
    
    
  5. Crie um procedimento de nome Test que chame DelegateTest uma vez com o delegado como parâmetro de AddNumbers, e de novo com o delegado como parâmetro de SubtractNumbers.

    Visual Basic
    Protected Sub Test()
        DelegateTest(5, AddressOf AddNumbers, 3)
        DelegateTest(9, AddressOf SubtractNumbers, 3)
    End Sub
    
    

    Quando Test é chamado, ele primeiro exibe o resultado de AddNumbers atuando em 5 e 3, que é 8. Em seguida, o resultado de SubtractNumbers atuando em 9 e 3 é exibido, que é 6.

Conteúdo da Comunidade   O que é Conteúdo da Comunidade?
Adicionar novo conteúdo RSS  Anotações
Processing
© 2009 Microsoft Corporation. Todos os direitos reservados. Termos de Uso  |  Marcas Comerciais  |  Política de Privacidade
Page view tracker