C sharp - Consulta sobre Delegados, expresiones Lambda, eventos

 
Vista:

Consulta sobre Delegados, expresiones Lambda, eventos

Publicado por Nicolas (4 intervenciones) el 07/09/2015 19:04:28
Buenas tardes,

Estoy realizando un curso de LINQ pero previamente estamos viendo unos temas que verdaderamente me superan. Por no haber visto tanto código relacionado a este tema y por como esta explicado, también por sus vueltas.

Mi consulta es y con un ejemplo en código si es posible, ¿que son los delegados, expresiones lambda, métodos anónimos y porque tienen correlato entre ellos?.

Gracias.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Consulta sobre Delegados, expresiones Lambda, eventos

Publicado por David (60 intervenciones) el 09/09/2015 00:46:20
Buf, por dónde empezar?

Un delegate se podría decir que es un método que se ejecuta al dispararse un evento o callback, lo que sería por ejemplo el click de un button o recibir un paquete por ftp.
Un método anónimo es ese que está definido sin nombre.
Una expresión lambda se podría decir que es todo lo que pones además de otras cosas (método anónimo, delegate, Func<>, Action<>, Predicate<>)

A ver si consigo poner un ejemplo:

Imagina que capturas el click de un botón en código. Lo normal sería así:

1
2
3
4
5
6
7
8
button1.Click += button1_Click;
.
.
.
private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Click de button1!");
}

En este código, el delegate es button1_Click. Este delegate puede transformarse en lambda, así:
1
button1.Click += (obj, args) => MessageBox.Show("Click de button1!");
Como puedes ver, hasta el += es todo igual.
La parte (obj, args) es el equivalente de private void button1_Click(object sender, EventArgs e). Se omiten los tipos, pero hay que poner nombre a los parámetros.
El => identifica a la expresión lambda, y es el equivalente a {}
Lo que hay a la derecha de => es el contenido de {}
los parámetros del delegate están definidos (obj es sender y args es e) y el símbolo => identifica que es una expresión lambda. Tampoco tiene nombre por ningún sitio, por lo que es un método anónimo.

No sé si así te sirve. Si no pregunta lo que necesites.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Consulta sobre Delegados, expresiones Lambda, eventos

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 09/09/2015 08:28:10
Haber, si quieres saber todo lo que pides, quien mejor que el gran maestro Miguel Muñoz Serafín te lo va a explicar aquí:


Espero te sirva.

Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta sobre Delegados, expresiones Lambda, eventos

Publicado por Nicolas (4 intervenciones) el 18/09/2015 14:07:40
Justamente estaba mirando estos vídeos de el, había visto las 1ras pero como era muy básico lo quité, no sabia que explicaba delegados, debe ser otro set de vídeos el que vi de él.
Gracias por el vídeo!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta sobre Delegados, expresiones Lambda, eventos

Publicado por Nicolas (4 intervenciones) el 18/09/2015 14:06:22
Muchas gracias por tu respuesta compañero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar