A menudo preguntamos sobre que son y para que sirven los delegados… valga esta entradrilla :-))
‘Según definición…‘ Un delegado es un tipo que referencia un método compartido
‘ de un método tipo o una instancia de un objeto
‘ Cualquier procedimiento puede ser utilizado para crear una clase delegada
‘ de la instancia y posteriormente ser invocada a través del delegado
‘ … ea una especie de punteros…‘
‘Aunque el siguiente ejemplo no ilustre todos los usos
‘espero sirva de punto de partida para los que empiezan.
‘No olvideis que el delegado puede contener y devolver parámetros…
‘pero eso es trabajo del artista.
Delegate Function MiDelegado()
Public Class Form1Private Encendido As Boolean = False
Private Sub Form1_Load() Handles MyBase.Load
‘construir botón
Dim MiBoton As New Button
MiBoton.Text = «Asignar Delegado»
MiBoton.AutoSize = True
MiBoton.Dock = DockStyle.Bottom
‘al hacer click ejecutar sub
AddHandler MiBoton.Click, AddressOf EncenderApagar
‘añadir botón al form
Me.Controls.Add(MiBoton)
End Sub
Private Sub EncenderApagar()
‘Crear mi referencia al tipo delegado
Dim MiRefencia As MiDelegado
‘Encender si está apagado / apagar si encendido
If Not Encendido Then
‘asignar referencia a la función de encender
MiRefencia = AddressOf Encender
Else
‘asignar referencia a la función de apagar
MiRefencia = AddressOf Apagar
End If
‘Invocar la función en mi delegado
MessageBox.Show(MiRefencia.Invoke)
End Sub
‘
‘Devolver el estado de encendido
Private Function Encender() As String
Encendido = True
Return «Encendido»
End Function
‘
‘Devolver el estado de apagado
Private Function Apagar() As String
Encendido = False
Return «Apagado»
End Function
End Class
Saludos,
Pep Lluis,