Básicamente se dice "Te estoy dando esta (s,b)
" y me están volviendo s*b
o algo y si está utilizando lambda con las expresiones, pero puede ser algo como esto: Te estoy dando esta (s,b)
y hacer algo con en el bloque de sentencias como:
{
int k = a+b;
k = Math.Blah(k);
return k;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
Una expresión Lambda
es un método sin nombre escrito en lugar de una instancia de delegado. El compilador convierte inmediatamente la expresión lambda a cualquiera:
- Un ejemplo delegado
- Una expresión Árbol
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = x => x*x;
Console.WriteLine(square(3));
}
}
Podríamos reescribir así:
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = Square;
Console.WriteLine(square(3));
}
static int Square (int x) {return x*x;}
}
Una expresión lambda tiene la siguiente forma:
(parameters) => expression or statement-block
En el ejemplo anterior no había un solo parámetro, x
, y la expresión es x*x
en nuestro ejemplo, x corresponde al parámetro i, y la expresión x*x
corresponde al tipo de retorno int
, por lo tanto, es compatible con el delegado de Transformer; código
delegate int Transformer (int i);
Una de expresión lambda puede ser un bloque de instrucciones en lugar de una expresión. Podemos reescribir nuestro ejemplo de la siguiente manera:
x => {return x*x;}
un árbol de expresión, de tipo Expression<T>
, lo que representa el código dentro de la expresión lambda en un modelo de objetos transitable.Esto permite que la expresión lambda se interprete más tarde en el tiempo de ejecución (verifique la "Expresión de consulta" para LINQ)
Operador lambda. Según lo que he leído, se pronuncia "va hacia" cuando se habla en voz alta (solo como una nota al margen). –
http://msdn.microsoft.com/en-us/library/bb397687.aspx para obtener más información .... –