Una expresión Lambda tiene la habilidad de manejar eventos en la misma línea de codigo, asignando un bloque de código directamente a un evento usando métodos anónimos. Las lambdas son una forma muy concisa de crear métodos anónimos.
Aprender a emplearlas, nos permite simplificar nuestro código en .NET.
Si investigamos un poco en Internet, encontraremos ejemplos con expresiones y con declaraciones, la única diferencia es que las declaraciones se encierran entre llaves, como en un bloque de código.
Como se codifican?
Para crear una expresión Lambda en C# se emplea el operador lambda (=>) y se divide en dos partes:
- Izquierda: Parámetros o variables de la función anónima.
- Derecha: Bloque de código de la función.
- En medio de ambas partes el operador.
Expresión: (a,b) => a > b;
Declaración: (a,b) => { a > b ? “A es mayor” : “B es mayor”;}
Y como se debe leer este ejemplo?
Hay varias formas de leerlo, algunas tiene que ver con el contexto en el cual se encuentre el código. A continuación como se lee la expresión.
- Dados a y b, tal que a mayor que b.
- Dados a y b, para los cuales a es mayor que b.
- Existe una más que en ingles dice “goes to”, pero que en español tal vez tendría una traducción un poco fuera de lugar, porque diría: dados a y b van a a mayor que b.
El mayor uso que nos ofrecen es como parámetro dentro de los métodos extendidos en LINQ,
sin embargo podemos usarlas al trabajar con colecciones:
List<Clientes> listado = _repositorio.GetAll();Al principio la sintaxis nos parece extraña, sin embargo una vez que nos hemos familiarizado con ella, es mucho más rápido…es como un atajo a la forma tradicional de escribir este código.
List<Autorizados> autorizados = new List<Clientes>();
listado.ForEach( x =>
{
if(x.Autorizado)
{
autorizados.Add(x);
}
}
);
Consideraciones al usar Lambdas
- Se debe usar el operador (=>).
- Para regresar un valor no es necesario emplear la instrucción Return.
- No es necesario indicar el tipo de los parámetros, este se infiere.
- Si declaramos el tipo de alguno, entonces será necesario indicar el de todos.
- No podemos usar parámetros opcionales.
- Tampoco podemos establecer el uso de ref, out o generic.
- Estos parámetros solo son visibles dentro del código lambda.
No hay comentarios:
Publicar un comentario