Declaração Delegate
Usado para declarar um delegado.Um delegado é um tipo de referência que se refere a uma Shared método de um tipo ou a um método de instância de um objeto. Qualquer procedimento com o parâmetro e tipos de retorno correspondentes pode ser usado para criar uma instância dessaclassede delegado. O procedimento mais tarde, em seguida, pode ser chamado por meio de uma instância do delegado .
[ <attrlist> ] [ accessmodifier ] _
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]
Partes
Termo |
Definição |
attrlist |
Opcional.Lista de atributos que aplicar a este delegado.Diversos parâmetros são separados por vírgulas.Você delimitar a Lista de atributos (Visual Basic) entre colchetes ("<" e ">"). |
accessmodifier |
Opcional.Especifica qual código pode acessar a delegado.Pode ser um dos seguintes:
Você pode especificar Protected Friend para permitir o acesso do código dentro do mesmo assembly, uma classede derivada ou o delegadoda classe. |
Shadows |
Opcional.Indica que este delegado redeclara e oculta um elemento de programação com nomes idênticos ou conjunto de elementos sobrecarregados, em uma classe base.Você pode sombrear qualquer tipo de elemento declarado com qualquer outro tipo. Um elemento sombreado não está disponível dentro da classe derivada que o sombreia, com exceção de onde o elemento sombreamento é inacessível.Por exemplo, se um elemento Private sombreia um elemento da classe base, o código que não possui permissão para acessar o elemento Private acessa o elemento da classe base em vez disso. |
Sub |
É opcional, mas um Sub ou Function deve ser exibido.Esse procedimento como um delegadode declaraSubprocedimento que retorna um valor. |
Function |
É opcional, mas um Sub ou Function deve ser exibido.Esse procedimento como um delegadode declaraFunctionprocedimento que retorna um valor. |
name |
Necessário.Nome do tipo delegado ; segue um padrão variável de convenções de nomenclatura. |
typeparamlist |
Opcional.Lista de parâmetros de tipo para este delegado.Vários parâmetros de tipo são separados por vírgulas.Opcionalmente, cada tipo de parâmetro pode ser declarada variante usando In e Out modificadores genéricos.Você deve colocar o Lista de tipo (Visual Basic) entre parênteses e conectá-lo com o Of palavra-chave. |
parameterlist |
Opcional.Lista de parâmetros que são passados para o procedimento , quando for chamado.Você deverá colocar o Lista de parâmetros (Visual Basic) entre parênteses. |
type |
Necessário se você especificar um Function procedimento. Tipo de dados do valor retornado. |
Comentários
O Delegate demonstrativo define o parâmetro e tipos de retorno de umaclassede delegado. Qualquer procedimento com parâmetros e tipos de retorno correspondentes pode ser usado para criar uma instância dessaclassede delegado. O procedimento pode posteriormente ser invocado por meio de uma instância delegado , chamando o delegadodo Invoke método.
Representantes podem ser declaradas com o namespace, módulo, classeou estrutura nível, mas não dentro de um procedimento.
Cada classe de delegados define um construtor que passa a especificação a um método objeto.Um argumento para um construtor delegate deve ser uma referência a um método ou um expressão lambda.
Para especificar uma referência a um método, use a seguinte sintaxe:
AddressOf [expression.]methodname
O compile-time type do expression deve ser o nome de uma classe ou uma interface que contém um método do nome especificado cuja assinatura coincide com a assinatura de classe Delegate.O methodname pode ser um método compartilhado ou um método de instância.methodname não é opcional, mesmo se você criar um representante para o método padrão da classe.
Para especificar um expressão lambda, use a seguinte sintaxe:
Function(parm As type, parm2 As type2, ...])expression
A assinatura de função deve corresponder do tipo delegate.Para obter mais informações sobre expressões lambda, consulte Expressões lambda (Visual Basic).
Para obter mais informações sobre delegados, consulte Delegados (Visual Basic).
Exemplo
O exemplo a seguir usa a Delegatede demonstrativo para declarar um delegado para operar em dois números e retornando um número. O DelegateTest método obtém uma instância de um delegado desse tipo e o usa para operar em pares de números.
Delegate Function MathOperator(
ByVal x As Double,
ByVal y As Double
) As Double
Function AddNumbers(
ByVal x As Double,
ByVal y As Double
) As Double
Return x + y
End Function
Function SubtractNumbers(
ByVal x As Double,
ByVal y As Double
) As Double
Return x - y
End Function
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
Protected Sub Test()
DelegateTest(5, AddressOf AddNumbers, 3)
DelegateTest(9, AddressOf SubtractNumbers, 3)
End Sub
Consulte também
Tarefas
Como: usar uma classe genérica (Visual Basic)
Referência
Operador AddressOf (Visual Basic)
Em (modificador genérico) (Visual Basic)
Check-out (modificador genérico) (Visual Basic)
Conceitos
Tipos genéricos em Visual Basic (Visual Basic)