Veamos algunos conceptos sobre delegados:
Los delegados son un tipo que representa a una función con una determinada declaración.
Vamos a analizar esta definición poco a poco:
-
Los delegados son un TIPO.
-
Los delegados representan a una función.
-
La función debe tener una determinada declaración.
Como los delegados son un tipo de dato, logicamente se pueden crear variables de este tipo asi mismo un delegado puede representar a una funcion por lo que necesita ser declarado.
Ejemplo:
En visual Basic. Net:
Public Delegate Function RealizarCalculo(ByVal Num1 As Integer, ByVal Num2 As Integer) As String
Se declara con la palabra clave Delegate…luego el nombre del delegado y su firma que implica los parametros y el tipo de valor devuelto en caso sea uno de tipo Function.
La firma dice lo siguiente: se tienen dos parametros, tanto el primero como el segundo son de tipo Integer y el valor que devuelve es de tipo string.
En c#:
public delegate string RealizarCalculo(int Num1, int Num2);
Al igual que en visual basic se declara con la palabra clave Delegate, luego el nombre de la funcion y los parametros y claro lo que retornara en este caso un string-
A continuacion un video sobre un ejemplo de delegados en visual basic y el codigo tanto en c# como en visual basic.
Primera parte:
Segunda parte:
Codigo en c#:
using System; using System.Collections.Generic; using System.Linq; using System.Text; public class Calcula { private int cNum1; private int cNum2; public int Num1 { get { return cNum1; } set { cNum1 = value; } } public int Num2 { get { return cNum2; } set { cNum2 = value; } } public delegate string RealizarCalculo(int Num1, int Num2); public String funcion(RealizarCalculo delegado) { return delegado.Invoke(Num1, Num2); } static void Main(string[] args) { Calcula objeto = new Calcula(); objeto.Num1 = 3; objeto.Num2 = 4; RealizarCalculo var; var = new RealizarCalculo(objeto.Suma); String a = var(objeto.Num1, objeto.Num2); Console.WriteLine("Suma: {0}", a); Console.ReadLine(); } public string Suma(int a, int b) { return "La suma es: " + (a + b); } }
Codigo en VB.NET:
Module Module1
'delegados
Public Sub main()
Dim objeto As New Calcula
objeto.Num1 = 3
objeto.Num2 = 4
With objeto
Console.WriteLine(.funcion(AddressOf Suma))
End With
End Sub
Public Function Suma(ByVal a As Integer, ByVal b As Integer) As String
Return "suma: " & (a + b) & vbNewLine
End Function
End Module
Public Class Calcula
Private cNum1 As Integer
Private cNum2 As Integer
Public Property Num1() As Integer
Get
Return cNum1
End Get
Set(ByVal value As Integer)
cNum1 = value
End Set
End Property
Public Property Num2() As Integer
Get
Return cNum2
End Get
Set(ByVal value As Integer)
cNum2 = value
End Set
End Property
Public Delegate Function RealizarCalculo(ByVal Num1 As Integer, ByVal Num2 As Integer) As String
Public Function funcion(ByVal delegado As RealizarCalculo) As String
Return delegado.Invoke(Num1, Num2)
End Function
End Class
RSS Feed
Twitter
May 14th, 2010
admin 