concepto de delegate

03/10/2005 - 22:45 por lucho | Informe spam
Gente:

¿Cual es el concepto de : delegate?

Preguntas similare

Leer las respuestas

#6 Eduardo A. Morcillo [MS MVP VB]
04/10/2005 - 16:39 | Informe spam
Bueno. Imagino que me tocará "ildasmar" (¿que tal?) una aplicacion de
consola con delegados para no darte la razón como a los locos :)



Mas comodo es "Reflectorear" (o sea usar Reflector).

En cualquier caso, me parece más directo -y mas flexible- utilizar un
delegado para una función que implementar una interfaz.



Si es algo simple probablemente sea mas practico un delegado que andar
declarando interfaces y clases, sobre todo si es dentro de una misma
aplicacion. Como un delegado es una clase seguramente es mas costoso en
terminos de memoria y rendimiento que usar una interface, pero tiene sus
ventajas como por ejemplo el llamado asincrono del metodo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#7 Eduardo A. Morcillo [MS MVP VB]
04/10/2005 - 16:41 | Informe spam
Pregunta tonta que solo puede formularse cerca de las 4 a.m. cuando
se esta haciendo experimentos que no salen, y que se ruega a la
concurrencia ignorar <:-S



Ignorado :-)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#8 Leonardo Azpurua [mvp vb]
04/10/2005 - 18:30 | Informe spam
"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:uTdc$
Si es algo simple probablemente sea mas practico un delegado que andar
declarando interfaces y clases, sobre todo si es dentro de una misma
aplicacion. Como un delegado es una clase seguramente es mas costoso en
terminos de memoria y rendimiento que usar una interface, pero tiene sus
ventajas como por ejemplo el llamado asincrono del metodo.



A ver.

Una interfaz es una definición "abstracta" de un tipo.
Si usas una interfaz, debes "encarnarla" en una instancia de una clase que
implemente esa interfaz.
¿No tienes que crear igualmente una clase, con la misma penalización que si
utilizas un delegado?

Por otra parte, pensandolo bien, se me hace dificil encontrar un ejemplo
practico no trivial donde utilizar un delegado en vez de una clase que
implementa una interfaz no sea consecuencia de algun tipo de error de
diseño.

Pero a veces, gracias a Dios, las soluciones de algunos problemas son
"triviales" (con frecuencia tanto que no hacen falta ni interfaces ni
delegados) :)

Salud!
Respuesta Responder a este mensaje
#9 Eduardo A. Morcillo [MS MVP VB]
04/10/2005 - 20:15 | Informe spam
Una interfaz es una definición "abstracta" de un tipo.
Si usas una interfaz, debes "encarnarla" en una instancia de una
clase que implemente esa interfaz.
¿No tienes que crear igualmente una clase, con la misma penalización
que si utilizas un delegado?



Depende, porque la interface puede estar implemetada en un objeto que ya
tienes creado de antemano. Pero de todas formas la llamada al metodo por
medio de la interface es directa mientras que con el delegado no.

Por otra parte, pensandolo bien, se me hace dificil encontrar un
ejemplo practico no trivial donde utilizar un delegado en vez de una
clase que implementa una interfaz no sea consecuencia de algun tipo
de error de diseño.



Revisando el framework en busca de delegados que no se usen para
notificaciones (eventos y callbacks) he encontrado unos pocos (seguramente
hay mas que no he visto):

System.Threading.ThreadStart
System.Reflection.MemberFilter
System.Reflection.TypeFilter
System.Text.RegularExpressions.MatchEvaluator

Y todos parecen seguir una misma regla, ser usados por un solo metodo de una
sola clase. Quizas esa sea la regla a seguir para elegir si usar una
interface o un delegado.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#10 lucho
04/10/2005 - 23:03 | Informe spam
Gracias a Leonardo y Eduardo por sus aclaraciones.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida