C# Lambda Expresion

Páginas: 17 (4249 palabras) Publicado: 17 de julio de 2012
Expresiones lambda (Guía de programación de C#)
Visual Studio 2010
Una expresión lambda es una función anónima que puede contener expresiones e instrucciones y se puede utilizar para crear delegados o tipos de árboles de expresión.
Todas las expresiones lambda utilizan el operador lambda = >, que se lee como "va a". El lado izquierdo del operador lambda especifica los parámetros de entrada(si existe alguno), mientras que el lado derecho contiene el bloque de expresiones o instrucciones. La expresión lambda x => x * x se lee "x va a x veces x". Esta expresión se puede asignar a un tipo de delegado del siguiente modo:
C#
delegate int del(int i);
static void Main(string[] args)
{
del myDelegate = x => x *x;
int j = myDelegate(5); //j = 25
}
Para crear un tipo de árbol de expresión:
C#
using System.Linq.Expressions;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{Expression<del> myET = x => x * x;
}
}
}
El operador => tiene la misma prioridad que la asignación (=) y es asociativo por la derecha.
Las expresiones lambda se usan en consultas de LINQ basadas en métodos como argumentos de los métodos de operador de consulta estándar, tales como Where.
Cuando seutiliza la sintaxis de método para llamar al método Where en la clase Enumerable (como se hace en LINQ to Objects y LINQ to XML), el parámetro es un tipo delegado System.Func<T, TResult>. Una expresión lambda constituye la manera más práctica de crear ese delegado. Cuando se llama al mismo método en, por ejemplo, la clase System.Linq.Queryable (como se hace en LINQ to SQL), el tipo deparámetro es System.Linq.Expressions.Expression<Func>, donde Func es cualquier delegado de Func que tenga hasta dieciséis parámetros de entrada. De nuevo, una expresión lambda constituye una manera muy concisa de construir ese árbol de expresión. Las expresiones lambda permiten que las llamadas a Where tengan un aspecto similar, aunque, de hecho, el tipo de objeto creado desde la expresión lambdasea diferente.
En el ejemplo anterior, observe que la firma de delegado tiene un parámetro de entrada con tipo implícito int y devuelve un int. La expresión lambda se puede convertir en un delegado de ese tipo porque también tiene un parámetro de entrada (x) y un valor devuelto que el compilador puede convertir implícitamente al tipoint. (La inferencia de tipo se analiza con más detalle en lassiguientes secciones.) Cuando el delegado se invoca utilizando un parámetro de entrada de 5, devuelve un resultado de 25.
Las expresiones lambda no se permiten en el lado izquierdo del operador is o as.
Todas las restricciones que se aplican a los métodos anónimos también se aplican a las expresiones lambda. Para obtener más información, vea Métodos anónimos (Guía de programación de C#).
Lambdasde expresión

Una expresión lambda con una expresión en el lado derecho se denomina lambda de expresión. Las lambdas de expresión se utilizan ampliamente en la construcción de Árboles de expresión (C# y Visual Basic). Una lambda de expresión devuelve el resultado de la expresión y presenta la siguiente forma básica:
(input parameters) => expression
Los paréntesis sólo sonopcionales si la lambda tiene un parámetro de entrada; de lo contrario, son obligatorios. Dos o más parámetros de entrada se separan por comas y se encierran entre paréntesis:
(x, y) => x == y
A veces, es difícil o imposible para el compilador deducir los tipos de entrada. Cuando esto ocurre, puede especificar los tipos explícitamente como se muestra en el ejemplo siguiente:...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Expresiones en C#
  • Construcción de expresiones en C++
  • el expresionismo 3 c grupo 1
  • Lambda
  • Expresiones Regulares en C#
  • Analizador de expresiones en c
  • Expresiones logicas en c
  • Sonda Lambda

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS