Acerca de AddressOf en VB.NET

Hola, EnableDisconnectNotification y EnableWriteNotification son funciones externas, ¿son delegadas?

El siguiente ejemplo sugiere el uso de delegados

Este ejemplo demuestra cómo usar delegados para pasar un procedimiento almacenado a otro.

Un delegado es un tipo que se puede utilizar en Visual Basic como otros tipos. Si aplica el operador AddressOf a un nombre de procedimiento almacenado, se devuelve un objeto delegado.

El procedimiento almacenado en este ejemplo tiene un parámetro delegado que acepta una referencia a otro procedimiento almacenado, que se obtiene utilizando el operador AddressOf.

Crear un delegado y hacer coincidir el procedimiento almacenado

Cree un delegado llamado MathOperator.

Visual Basic

Copiar código

Función delegada MathOperator( _

ByVal x As Double, _

ByVal y As Double _

) As Double

Crea un procedimiento almacenado llamado AddNumbers cuyos parámetros y valores de retorno coincidan con los del MathOperator para que Signatures coincida.

Visual Basic

Copiar código

Función AddNumbers( _

ByVal x As Double, _

ByVal y As Double _

) As Double

Retornar x + y

Función final

Crea un procedimiento almacenado llamado SubtractNumbers, Su firma coincide con MathOperator.

Visual Basic

Copiar código

Función RestarNúmeros( _

ByVal x As Double, _

ByVal y como doble _

) como doble

devolver x - y

función final

Cree un procedimiento almacenado llamado DelegateTest, el procedimiento almacenado El procedimiento acepta un delegado como parámetro.

Este procedimiento almacenado puede aceptar referencias a AddNumbers o SubtactNumbers porque sus firmas coinciden con la firma del MathOperator.

Visual Basic

Copiar código

Sub DelegateTest( _

ByVal x As Double, _

ByVal op As MathOperator, _

ByVal y As Double _

)

Dim ret As Double

ret = op.Invoke(x , y) 'Método de llamada.

MsgBox(ret)

End Sub

Cree un procedimiento almacenado llamado prueba, use el delegado AddNumbers como parámetro, llame a DelegateTest una vez y luego use el Delegado de SubtractNumbers Llámelo nuevamente como parámetro.

Visual Basic

Copiar código

Subprueba protegida()

DelegateTest(5, AddressOf AddNumbers, 3)

p >

DelegateTest(9, AddressOf SubtractNumbers, 3)

End Sub

Cuando se llama a Test, primero muestra el resultado de AddNumbers entre 5 y 3, es decir 8, y luego muestra el resultado de Restar Números entre 9 y 3, que es 6.

Crea un subdelegado llamado MySubDelegate.

Delegate Sub MySubDelegate(ByVal x As Integer)

Declara una clase que contiene un método con la misma firma que este delegado.

Clase clase1 Sub Sub1(ByVal x As Integer) MsgBox("El valor de x es: " & CStr(x))End Sub End Class

Llamando al incorporado Invocar método Para llamar a un método asociado con un delegado, defina un método para crear una instancia de este delegado y llame al método asociado con este delegado.

Protected Sub DelegateTest() Dim c1 As New class1 ' Crea una instancia delegada. Dim msd As MySubDelegate = AddressOf c1.