Utilicé eventos y delegaciones en muchos de mis proyectos, pero aún tengo algunas dudas en cuanto a dónde usar los eventos y delegados en un proyecto y cuál es la diferencia entre un delegado y un evento. ¿Alguien puede explicarlo? ¿Por favor?Dónde usar eventos y delegados?
Respuesta
A Delegate es un tipo que puede encapsular una llamada a un método. Debe usar un delegado cuando quiera tratar el método como un objeto y pasarlo.
Un Event es solo una manera de exponer a un delegado como una propiedad a la que cualquier código fuera de su clase puede asociar a sus controladores pero no puede invocar al delegado. Si expone a su delegado como una propiedad pública, el código fuera de su clase no solo puede asociar a sus controladores, sino también invocar al delegado.
Además, Events también le permite agregar métodos de eliminación que se invocan cuando los manejadores se adjuntan \ se separan, al igual que el captador y el colocador de una propiedad pública que le permite controlar mejor el proceso.
Debe usar el evento cuando desee que otras clases se suscriban a un evento en su clase y se le notifique cuando ocurra.
public delegate void MyMessageHandlerType(string message);
public class EventTest
{
public event MyMessageHandlerType MessageEvent
{
add { } // invoked when MessageEvent += SomeMethod
remove { } // invoked when MessageEvent -= SomeMethod
}
}
Ambos delegados y eventos proporcionan un mecanismo de devolución de llamada. Un evento proporciona un mecanismo de devolución de llamada que está algo menos conectado que un delagate, en ese puede tener cualquier número de controladores adjuntos, y que el código a menudo funciona de la misma manera independientemente del número de controladores (si corresponde). Un buen ejemplo podría ser un evento Resized
de una ventana; el cambio de tamaño de la ventana funcionará independientemente de si hay algún controlador de eventos conectado; el evento es un mecanismo de notificación.
Un delegado está más conectado en muchos sentidos. Normalmente, puede asociar exactamente un método con un miembro delegado, y con frecuencia se esperan; tome los métodos de extensión LINQ (como Where
) por ejemplo: no funcionarán a menos que proporcione exactamente un método para el parámetro de delegado.
- 1. Eventos y delegados en F #
- 2. Eventos y delegados. ¿Qué patrón de diseño?
- 3. Delegados vs. eventos en Cocoa Touch
- 4. ¿Cuáles son las diferencias entre delegados y eventos?
- 5. C# Delegados y método firmas
- 6. Reorganización de eventos delegados en Moq
- 7. Problema DataContractSerializer con campos de eventos/delegados
- 8. C# - ¿Alguien puede decirme por qué y dónde debo usar delegados?
- 9. QDataWidgetMapper y delegados múltiples
- 10. Métodos y delegados anónimos
- 11. prepareForSegue y delegados
- 12. Delegados de multidifusión asincrónica
- 13. Protocolos y delegados para Dummies
- 14. ¿Cierres en los delegados del controlador de eventos C#?
- 15. Implementación de un único controlador de eventos para controles múltiples con diferentes delegados controladores de eventos
- 16. Cómo usar eventos en Yii
- 17. Crear un controlador catch-all para todos los eventos y delegados en C#
- 18. iPhone Interface Builder y Delegados
- 19. Delegados y devoluciones de llamada
- 20. Delegados y ParamArray: ¿Sugerencias de solución?
- 21. ¿Dónde registrarse para los eventos de C#?
- 22. ¿Dónde y cuándo usar LINQ to Objects?
- 23. Hibernate y JPA, ¿qué usar, dónde?
- 24. ¿Dónde y cómo usar clases anidadas?
- 25. Cuándo y dónde debo usar WCF
- 26. ¿Cuándo y dónde usar GetType() o typeof()?
- 27. Delegados, no entiendo bien
- 28. Cuándo usar eventos?
- 29. ¿Cuál es la diferencia entre los eventos con controladores de delegados y los que no?
- 30. Cómo trabajar con delegados y controlador de eventos para control de usuario
buena explicación aquí: http://blog.monstuff.com/archives/000040.html – SubniC
Un evento es solo una forma especial de un delegado. – VVS
posible duplicado de [Diferencia entre eventos y delegados y sus respectivas aplicaciones] (http://stackoverflow.com/questions/563549/difference-between-events-and- delegate-and-its-respective-applications) –