Fondamentalmente si dice: "Sto dando questo (s,b)
" e voi mi state restituendo s*b
o qualcosa e se si sta utilizzando lambda con le espressioni, ma può essere qualcosa di simile: io vi do questo (s,b)
e fare qualcosa con loro nel blocco di istruzioni del tipo:
{
int k = a+b;
k = Math.Blah(k);
return k;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
A Lambda
expression è un metodo senza nome scritto al posto di un'istanza delegata. Il compilatore converte immediatamente l'espressione lambda a uno:
- Un esempio delegato
- Un'espressione Albero
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = x => x*x;
Console.WriteLine(square(3));
}
}
Potremmo riscrivere così:
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = Square;
Console.WriteLine(square(3));
}
static int Square (int x) {return x*x;}
}
Un'espressione lambda ha la seguente forma:
(parameters) => expression or statement-block
Nell'esempio precedente si registra un solo parametro, x
, e l'espressione è x*x
nel nostro esempio, x corrisponde al parametro i, e l'espressione x*x
corrisponde al tipo di ritorno int
, quindi compatibile con il delegato di Transformer; Codice
delegate int Transformer (int i);
Una di espressione lambda può essere un blocco di istruzioni, invece di un'espressione. Possiamo riscrivere il nostro esempio come segue:
x => {return x*x;}
un albero di espressione, di tipo Expression<T>
, che rappresenta il codice all'interno dell'espressione Lamda in un modello di oggetti attraversabile.Ciò consente l'espressione lambda di essere intrepreted in seguito in fase di esecuzione (Si prega di controllare la "Espressione di query" per LINQ)
Operatore Lambda. Secondo quello che ho letto, è pronunciato "va a" quando si parla ad alta voce (proprio come una nota a margine). –
http://msdn.microsoft.com/en-us/library/bb397687.aspx per ulteriori informazioni .... –