2013-02-23 20 views
22

rozumiem wyrażenia lambda jest w istocie deklarację inline delegat aby zapobiec dodatkowy krokLambda Wyrażenie dla wielu parametrów

przykład

delegate int Square(int x) 
public class Program 
{ 
    static void Main(String[] args) 
    { 
     Square s = x=>x*x; 
     int result = s(5); 
     Console.WriteLine(result); // gives 25 
    } 
} 

jaki sposób można zastosować wyrażenia lambda do wielu parametrów Coś

delegate int Add(int a, int b) 
static void Main(String[] args) 
{ 
    // Lambda expression goes here 
} 

W jaki sposób można wyrazić wiele parametrów za pomocą wyrażeń lambda?

Odpowiedz

30

Musisz zrozumieć zachowanie Func, gdzie ostatni parametr jest zawsze wyjście lub wynik

Func < 1, 2, wyjście>

Func<int, int, int> Add = (x, y) => x + y; 

Func<int, int, int> diff = (x, y) => x - y; 

Func<int, int, int> multi = (x, y) => x * y; 
+0

Czy ktoś może rozwinąć, nie może zrozumieć. – Augustas

+1

@Augustas Func => (x, y) => x == y; // to zwróci true lub false w trzeciej zmiennej bool w func. x i y są pierwszymi dwoma ints w func. –

11

Tak. Gdy masz argumenty lambda inne niż jedno (> 1 lub> 1), użyj nawiasów wokół nich.

Przykłady

Func<int, int, int> add = (a,b) => a + b; 

int result = add(1, 3); 

Func<int> constant =() => 42; 

var life = constant(); 
1
delegate int Multiplication(int x, int y) 
public class Program 
{ 
    static void Main(String[] args) 
    { 
     Multiplication s = (o,p)=>o*p; 
     int result = s(5,2); 
     Console.WriteLine(result); // gives 10 
    } 
} 
Powiązane problemy