2013-02-23 12 views
22

ich einen Lambda-Ausdruck zu verstehen ist im Wesentlichen eine Inline-Delegatendeklaration des zusätzlichen SchrittLambda Ausdruck für mehrere Parameter

Beispiel

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 
    } 
} 

zu verhindern Wie man Lambda-Ausdrücke wie

zu Multi-Parameter Etwas gilt
delegate int Add(int a, int b) 
static void Main(String[] args) 
{ 
    // Lambda expression goes here 
} 

Wie können Multiparameter mit Lambda-Ausdrücken ausgedrückt werden?

Antwort

30

Sie das Func Verhalten verstehen müssen, wo der letzte Parameter immer die Ausgang oder Ergebnis ist

Func < 1, 2, outPut>

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

könnte jemand ausarbeiten, kann nicht verstehen. – Augustas

+1

@Augustas Func => (x, y) => x == y; // Dies wird das Wahr oder Falsch in der dritten bool-Variablen in der Funktion zurückgeben. x und y sind die ersten beiden Ints im Func. –

11

Ja. Wenn Sie Lambda-Argumente ungleich null (oder> 1) haben, verwenden Sie Klammern um sie herum.

Beispiele

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 
    } 
}