miércoles, 16 de septiembre de 2009

Delegados

Un delegado es un tipo que hace referencia a un método. Cuando se asigna un método a un delegado, éste se comporta exactamente como el método. El método delegado se puede utilizar como cualquier otro método, con parámetros y un valor devuelto.

Comenzamos creando un proyecto de escritorio en C#, al que llamaremos Delegados:

 
Luego añadimos una clase al proyecto para crear un método, la cual se llamará Clase.
Hacemos click derecho sobre el proyecto en el Explorador de Solución y aparecera el siguiente menú:

 
  
Una vez creada la clase escribiremos en ella el siguiente código (método que nos devuelve un string):
public string despedida()
        {
            return "Buen viaje";
        } 
Luego en el codigo del formulario declararemos los delegados y otro método, que serán utilizados posteriormente, mediante el siguiente código:
public delegate void saludo1();
public delegate string despedida1();
      
public static void bienvenida()
{
    MessageBox.Show("Hola");
}

Luego en el formulario agregaremos un botón (button desde el toolbox y arrastrar hasta el formulario). Una vez creado el botón (podemos cambiarle el nombre mediante las propiedades) haremos doble click y nos llevará al evento click del mismo, donde escribiremos el siguiente código:
 
saludo1 misaludo = new saludo1(bienvenida);
misaludo.Invoke();
            
Clase clase = new Clase();
despedida1 midespedida = new despedida1(clase.despedida);
MessageBox.Show(midespedida.Invoke());
En las primeras dos líneas podemos ver la instanciación de un delegado haciendo referencia a un método.
En la tercera línea instanciamos la clase, para luego en la cuarta línea poder llamar al método en la instanciación del delegado.

El código final en el formulario quedaría de la siguiente manera:

Una vez que corremos el proyecto obtendremos lo siguiente:

 
Al hacer click en el boton se llamará al método declarado en el formulario mediante el delegado saludo1, y obtendremos lo siguiente:
 
 Luego de hacer click se llama al método creado en la clase mediante el delegado despedida1, y obtendremos lo siguiente:

 
De esta manera podemos ver un ejemplo de como utilizar delegados.

No hay comentarios:

Publicar un comentario