2009-10-02 18 views
26

Ok, pregunta muy tonta.Expresión Lambda con una entrada vacía

x => x * 2 

lambda es una representación de la misma cosa que un delegado para

int Foo(x) { return x * 2; } 

Pero lo que es el equivalente de lambda

int Bar() { return 2; } 

??

¡Muchas gracias!

Respuesta

36

La lambda equivalente nularia sería () => 2.

+0

Maldita sea, eso fue rápido :) ¡Gracias a todos! – Luk

16

Eso sería: el uso

() => 2 

Ejemplo:

var list = new List<int>(Enumerable.Range(0, 10)); 
Func<int> x =() => 2; 
list.ForEach(i => Console.WriteLine(x() * i)); 

a lo solicitado en los comentarios, aquí hay un desglose de la muestra anterior ...

// initialize a list of integers. Enumerable.Range returns 0-9, 
// which is passed to the overloaded List constructor that accepts 
// an IEnumerable<T> 
var list = new List<int>(Enumerable.Range(0, 10)); 

// initialize an expression lambda that returns 2 
Func<int> x =() => 2; 

// using the List.ForEach method, iterate over the integers to write something 
// to the console. 
// Execute the expression lambda by calling x() (which returns 2) 
// and multiply the result by the current integer 
list.ForEach(i => Console.WriteLine(x() * i)); 

// Result: 0,2,4,6,8,10,12,14,16,18 
+0

Hola, esto parece un gran ejemplo; ¿Puedes explicarlo en inglés sencillo línea por línea, pieza por pieza? :) – PussInBoots

+0

@PussInBoots agregó algunos comentarios. ¡Espero que ayude! –

+0

Gracias. Todavía un poco desconcertado por Func x y x() .. Creo que necesito leer un poco más sobre Func, delegados y lambdas .. – PussInBoots

9

Puede simplemente use() si no tiene parámetros.

() => 2; 
4

El lmabda es:

() => 2 
Cuestiones relacionadas