Lo primero, debemos reconocer que entender como funcionan los eventos y delegados al comienzo parece algo confuso y poco claro, pero cuando empiezas a utilizar esta característica del .NET Framework notaras que fácil es y lo útil que puede ser si en tus aplicaciones implementas eventos y delegados.
¿Que son los Delegados?
Los apuntadores en C++ son los Delegados en .NET, la única diferencia es que en .NET este tipo (el delegate) es seguro, el mismo se encuentra inmerso en el Framework.
Con los delegados podremos crear apuntadores a funciones o métodos sin saber en el momento de compilación cuales realmente son, si eres de utilizar las funciones de tipo Callbacks esto te parecerá muy familiar.
Utilización de los delegados
Los delegados lo podemos utilizar en infinidad de lugares, generalmente se utiliza en conjunto con el trabajo de eventos.
Aquí publicare un ejemplo sencillo para que podamos entender como trabaja un delegado en C#.
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.Test();
}
private void Test() {
MiClase c = new MiClase();
c.Metodo1(PrintString);
}
private void PrintString(string mensaje){
Console.WriteLine(mensaje);
}
}
// Esta clase es la que contendrá
// el delegado
public class MiClase{
//Definimos el delegado
public delegate void UnDelegado(string mensaje);
public void Metodo1(UnDelegado d) {
d("Hola Delegado");
}
}
}
Más de Delegados:
Hay mucha información en Internet sobre delegados, mas abajo hago un pequeño listado de algunos posts que tocan el tema.
También encontré un excelente video tutorial que lo hizo Leonardo Micheloni donde nos explica de manera muy fácil y sencilla como funcionan los delegados en C#.