Documentos de Académico
Documentos de Profesional
Documentos de Cultura
C# - Delegados y Eventos
C# - Delegados y Eventos
Delegados y Eventos
Por: scar Lpez, M.Sc.
olopez@uniandino.com.co
DELEGADOS
Delegados
Delegados - Estructura
Delegados - Declaracin
[[atributos]] [modificador de acceso] delegate
tipo identificador (lista de parmetros,)
Delegados - Instanciacin
Delegados - Invocacin
Delegados - Ejemplo
1.
using System;
2.
3.
class TestClass {
static int Double (int val) {
Console.WriteLine("ejecutando Double");
return val*2;
}
4.
5.
6.
7.
11.
12.
8.
9.
10.
13.
14.
d1 = new MyDelegate(TestClass.Double);
d2 = new MyDelegate(tc.Triple);
15.
16.
Console.WriteLine(d1(3));
Console.WriteLine(" ---------- ");
Console.WriteLine(d2(5));
Console.ReadLine();
17.
18.
19.
20.
21.
22.
Delegados - Optimizaciones
Mtodos: Instancia vs. Estticos
Es conveniente declarar como estticos los mtodos
que se pasan al delegado. Pero declararlos como de
instancia puede ser ligeramente ms eficiente
Delegados Estticos
Es conveniente asignar la responsabilidad de
instanciar el delegado a la clase que implementa el
mtodo compatible con ste, implementado como un
campo esttico
Delegados como Propiedades
Proporciona encapsulamiento, permite instanciar el
delegado slo cuando se necesita, slo lectura
OALP-2004 All Rights Reserved
Multicasting
Multicasting
Multicasting - Invocacin
Multicasting - Ejemplo
1.
using System;
2.
3.
4.
5.
6.
7.
11.
12.
8.
9.
10.
13.
14.
d1 = new MyDelegate(MulticastTest.Double);
d2 = new MyDelegate(tc.Triple);
compositeDelegate = d1 + d2;
15.
16.
17.
20.
21.
18.
19.
22.
1.
2.
3.
4.
5.
EVENTOS
Rol
Descripcin
Fuente de Eventos
Consumidor de
Eventos
Objeto Evento
2.
3.
4.
5.
Patrn Observer
Eventos en C#
Fuente de Eventos
Una clase que declara un miembro delegado y su
correspondiente miembro evento e invoca este ltimo
cuando corresponda
Consumidor de Eventos
Proporciona un mtodo handler de eventos compatible
con el delegado de la fuente y lo registra con el
miembro evento de la fuente usando el operador +=
Objeto Evento
General, pero no necesariamente, es una instancia de
la clase System.EventArgs o de una de sus subclases, a la que se le han aadido campos con
informacin adicional sobre el evento
OALP-2004 All Rights Reserved
Eventos en C#
[[atributos]] [modificadores]
event tipo identificador
Eventos en C#