2010-01-12 23 views
7

Hai chicos,¿Cuándo debería usar expresiones lambda que viene con C# 3.0?

Mis compañeros desarrolladores estaban hablando de expresiones lambda esta mañana. Así que decidí preguntar aquí en SO

  • cuando debo usar la expresión lambda que viene con C# 3.0?
+1

¿Una expresión lambada? Pensé que C# era un lenguaje moderno, entonces, ¿por qué usa una locura de baile tan antigua? (SCNR ;-) –

+0

No hagas ninguna suposición jae, hasta que sepas qué es y dónde se usa;) las expresiones lambda en C# son geniales y son algo irremplazable en la tecnología moderna como LINQ. –

+0

jae no confundas lambda y lambada – baldy

Respuesta

2

No creo que hay una regla general cuando su debe usarlos, pero si miro a mí mismo me tienden a usarlos siempre que uso métodos anónimos. La mayoría de las veces esto ocurre cuando se genera un código en un nuevo hilo usando ThreadPool, o cuando se hacen consultas LINQ.

ThreadPool ejemplo:

ThreadPool.QueueUserWorkItem(state => { 
    // the code to run on separate thread goes here 
}); 

LINQ:

var myItems = GetSomeIEnumerable() 
        .Where(o => o.SomeProperty.Equals("some value")); 
        .OrderBy(o => o.SomeOtherProperty); 
5

Una expresión lambda es una función anónima que puede contener expresiones y sentencias, y se puede usar para crear delegados o tipos de árboles de expresiones.

esperan de utilizar

del myDelegate = delegate(int x){return x*x; }; 
int j = myDelegate(5); //j = 25 

puede escribir

del myDelegate = x => x * x; 
int j = myDelegate(5); //j = 25 
1

Respuesta corta: leer "C# in depth" de la parte superior del SO-compañero más votado Jon Skeet. Es un excelente libro y aprenderá todo sobre las nuevas características C# 3, especialmente cuándo usarlas, incluidas las expresiones Lambda.

0

Al menos no utilizan para eventos á la

myUserControl.Loaded += (sender, e) => DoSomething(); // coding horror!!!1 :-P 

porque a partir de ahora todavía no puede darse de baja y limpiar las cosas más entonces tan fácilmente. Seguro que hay fábricas WeakEventHandler y cosas por el estilo, pero aún así es mejor eliminar todos los controladores de eventos manualmente una vez que el UserControl se elimine de su principal.

Para todo lo demás, creo que mejoran mucho la legibilidad, por lo que debes usarla a tu criterio.

+0

No estoy de acuerdo. Los encuentro especialmente útiles para eventos. Puedo ver que la cancelación es un problema solo en unos pocos casos. –

Cuestiones relacionadas