2010-06-18 18 views

risposta

16

Viene denominato lambda operator in the MSDN docs.

Tutte le espressioni lambda utilizzano l'operatore lambda =>, che viene letto come "va a". Il lato sinistro dell'operatore lambda specifica i parametri di input (se presenti) e il lato destro contiene l'espressione o il blocco di dichiarazione . L'espressione lambda x => x * x viene letta "x passa a x volte x". Questo espressione può essere assegnato a un tipo di delegato come segue:

2

Se si sta parlando nel contesto di LINQ che è un lamdba operator.

Come ...

var selectedValues = myList.Where(v=>v.Name="Matt"); 

È possibile utilizzare questi nei propri metodi al posto di delgates. Gli usi possibili includerebbero qualcosa di simile ...

void DoWork<T>(T input, Func<T, bool> doAction, Action<T> action) 
{ 
    if (doAction(input)) 
     action(input); 
} 

... utilizzo del metodo di cui sopra sarà simile ...

DoWork(5, i=>i>1, v=>Console.WriteLine(v)); 

... perché 5 è maggiore di 1 questo visualizzerebbe 5 sulla console.

+0

Gli operatori Lambda non vengono utilizzati solo con LINQ. – Femaref

+0

Credo che il mio esempio dimostri che ... ho detto nel contesto del perché avrebbe potuto vedere qualcosa di strano in un esempio come 'for (; i => 1;)' e potrebbe non rendersi conto che è un'espressione normale. La cosa ancora più divertente è che in LINQ puoi anche fare '.Seleziona (i =>" Nuovo valore ")' per creare un insieme enumerabile di "Nuovo valore" la lunghezza del set di input. –

+1

Giusto per essere chiari, '=>' non è "l'espressione lambda" - è * parte * di esso. –