Delegados en .NET
24/06/2008Ya desde hace un buen tiempo, desde que ando en esto del desarrollo de software he escuchado sobre los Delegados, pero nunca los había entendido hasta hoy. Puedo escribir algo sobre lo que yo entiendo sobre ellos, pudiera ser que alguien tenga una mejor opinión, entonces leeré todos sus comentarios.
Partiendo de la definición de Delegados como una estructura de programación que nos permite invocar a uno o varios métodos a la vez. Estos métodos pueden encontrarse en la misma clase desde la que se invocan o en clases distintas asociadas a ésta. Hablando “a bajo nivel”, un delegado es un puntero seguro a una función (pero sin la complejidad de la administración propia de dicho puntero).
En palabras cristianas un Delegado no es nada más que un puntero a una función definida previamente en alguna clase. Se debe de definir la firma y el tipo devuelto del Delegado de la misma forma en que se define la función utilizando la palabra reservada delegate, quedandonos la implementación de la siguiente manera:
1 2 3 | public class DelegateTest { private delegate string NombreDelegado (string Param1, …); } |
Podemos hacer uso de los métodos definidos en las clases a través del Delegado. La instancia del delegado creado deberá de pedir como parámetro un método que puede ser la función a la que queremos apuntar -¿interesante no?- el IDE de Visual Studio solicita el parámetro de este tipo gracias a la definición del delegado creado anteriormente.
La ventaja de usar el Delegado como tal es que podemos utilizar los métodos de las funciones tal y como si estuviéramos creando una instancia de la función. Otra ventaja que resulta interesante es que podemos utilizar Delegados para desencadenar la llamada a varios métodos ya sea que estén en una clase o en clases por separado; esto es posible gracias a la combinación de dos o más Delegados definidos mediante el método estático combine que devuelve un Delegado genérico el mismo tipo del Delegado -ojo, no del mismo tipo de retorno del delegado sino del tipo tal delegate.
Como podemos ver la aplicación de Delegados los debemos de orientar a resolver problemas de ingeniería y de esta forma poderlos simplificar.
Ya después describiré algún uso en un proyecto futuro.
No comments yet.