¿Qué es el dispositivo y cómo usar las expresiones lambda? [duplicar]

StackOverflow https://stackoverflow.com/questions/25376

  •  09-06-2019
  •  | 
  •  

Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

He leído que las Expresiones Lambda son una adición increíblemente poderosa a C #, sin embargo, me siento desconcertada por ellas. ¿Cómo pueden mejorar mi vida o mejorar mi código? ¿Alguien puede señalar un buen recurso para aprender tales expresiones?

Parecen geniales, pero ¿cómo se relacionan con mi vida cotidiana como desarrollador de asp.net?

Edit: Gracias por los ejemplos, y gracias por el enlace a los artículos de Eric White. Todavía estoy digiriendo esos ahora. Una pregunta rápida: ¿son las expresiones lambda útiles para otra cosa que no sea la consulta? Cada ejemplo que he visto ha sido una construcción de consulta.

¿Fue útil?

Solución

  

: son expresiones lambda útiles para cualquier otra cosa que no sean la consulta

Las expresiones Lamba no son más que una forma conveniente de escribir una función 'en línea'.

Entonces, son útiles para cualquier lugar en el que quisieras un poco de código que pueda llamarse como si fuera una función separada, pero que en realidad está escrito dentro de su interlocutor. (Además de mantener el código relacionado en la misma ubicación en un archivo, esto también le permite jugar juegos divertidos con alcance variable; consulte 'cierres' para obtener una referencia.)

Un ejemplo de un uso no relacionado con la consulta de un lamba podría ser un poco de código que hace algo asíncrono que comienzas con ThreadPool.QueueUserWorkItem. El punto importante es que también puede escribir esto utilizando delegados anónimos (que fueron una introducción de C # 2), o simplemente una función de miembro de la clase claramente separada.

Este http://blogs.msdn.com/jomo_fisher /archive/2005/09/13/464884.aspx es una excelente introducción paso a paso de todas estas cosas, que pueden ayudarlo.

Otros consejos

Lambdas lleva la programación funcional a C #. Son funciones anónimas que se pueden pasar como valores a otras funciones determinadas. Se usa más en LINQ.

Aquí hay un ejemplo artificial:

List<int> myInts = GetAll();
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);

Ahora, cuando escalas por pares, EvenNumbers the lamda

x=> x % 2 == 0

luego se aplica como filtro a myInts.

Se vuelven realmente útiles para aumentar la legibilidad a algoritmos complicados que tendrían muchos condicionales y bucles IF anidados.

Aquí hay un ejemplo simple de algo genial que puedes hacer con las lambdas:

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myList.RemoveAll(x => x > 5);
//myList now == {1,2,3,4,5}

El método RemoveAll toma un predicado (un delegado que toma argurments y devuelve un bool), se eliminan todos los que coinciden. Usar una expresión lambda lo hace más simple que declarar el predicado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top