2012-07-02 6 views

risposta

12

Un predicato è delegato (oggetto funzione) che restituisce un valore booleano. Lambda expressions può essere utilizzato per definire qualsiasi funzione anonima, che include predicati, ad es. esprimere un predicato nella forma di un'espressione lambda:

Predicate<int> isEven2 = x => x % 2 == 0; 

funzionalmente equivalente a:

Func<int,bool> isEven = x => x % 2 == 0; 
+3

Un predicato non significa * * hanno di essere una funzione anonima. –

+0

Per i metodi che accettano un predicato come argomento (ad esempio List.FindAll), sarebbe bello se il compilatore riconoscesse Func come un predicato valido, dal momento che sono funzionalmente equivalenti. Ma puoi semplicemente eseguirlo attraverso un lambda come: 'var x = MyList.FindAll (i => isEven (i));' – Graham

3

predicato definisce un insieme di criteri, mentre l'espressione lambda è una funzione anonima. Puoi usare lambda ex. come un predicato, ma ciò non significa che siano la stessa cosa.

Predicate

Lambda expression

+1

Ok, ma qual è esattamente la differenza? – Phil

Problemi correlati