2008-12-13 10 views
6

Vierta sus publicaciones. Comenzaré con un par, veamos cuánto podemos recaudar.¿De qué maneras haces uso de C# Lambda Expressions?

Para proporcionar controladores de eventos en línea como

button.Click += (sender,args) => 
{ 
}; 

Para encontrar elementos en una colección

var dogs= animals.Where(animal => animal.Type == "dog"); 

Para la iteración de una colección, como

animals.ForEach(animal=>Console.WriteLine(animal.Name)); 

que vengan !!

+1

No es SO h ¿Ya tienes bastantes "preguntas" sin sentido? ¿Qué hay de preguntar cómo las personas hacen uso de las declaraciones "si"? O clases? int, tal vez? Las lambdas son solo una nueva característica útil en el lenguaje, a la par de cualquier otra característica del idioma. ¿Necesitamos estas preguntas de reptoración todo el tiempo? – jalf

+0

Jalf, yo mismo revisé el código y escribí, y descubrí que estoy usando Lambdas de varias maneras interesantes: en comparación con Ifs y whiles, Lambda es una característica mucho más poderosa. Por lo tanto, pensé que esta publicación me ayudaría a mí y a otros a aprender más usos. – amazedsaint

Respuesta

3

Devolución de un objeto personalizado:

var dude = mySource.Select(x => new {Name = x.name, Surname = x.surname}); 
+2

¿Sabía que puede hacer lo nuevo {x.name, x.surname}? Las propiedades serán minúsculas como en este ejemplo. – leppie

0

Creación de un acumulador.

static Func<int, int> Foo(int n) 
    { 
     return a => n += a; 
    } 

Tenga en cuenta el uso de cierre aquí. está creando un acumulador que "recuerda" el valor de n entre llamadas, sin una clase o variable de instancia.

-1

Para expresar una función sin nombre.

+0

@DaveZych - de acuerdo, tal vez lo haga, cuatro años después. –

+1

Puede eliminar la respuesta ... También he llegado aquí por las herramientas ... – gdoron

+0

@DaveZych. Lamentablemente, esto responde la pregunta. esta es la razón por la que señalé la pregunta para su eliminación ... – gdoron

2

Una línea de función

Func<int, int> multiply = x => x * 2; 
int y = multiply(4); 
2

Aquí hay un poco diferente uno - se les puede utilizar (like this) para simular los perdidos "infoof"/operadores "nombredel" en C# - es decir, de modo que en lugar de la codificación dura a una nombre de propiedad como una cadena, puede usar una lambda. Esto significa que está validado en tiempo de compilación (qué cadenas no pueden ser).

Es evidente que hay un costo de rendimiento a esta, por lo tanto, "sólo por diversión", pero interesante ...

0

Para las operaciones de agregados con LINQ:

public Double GetLengthOfElements(string[] wordArr) { 

    double count = wordArr.Sum(word => word.Length); 
    return count; 
} 

mejor que estar utilizando foreach

1

Con el método invocador para actualizar la interfaz de usuario de un evento compuesto de múltiples hilos

void Task_Progress(object sender,TaskProgressArgs e) 
{ 
    BeginInvoke(new MethodInvoker(() => UpdateProgress(e))); 
}