2012-07-02 24 views

Respuesta

12

Un predicado es delegado (función de objeto) que devuelve un valor booleano. Lambda expressions se puede usar para definir cualquier función anónima, que incluye predicados, p. para expresar un predicado en la forma de una expresión lambda:

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

que es funcionalmente equivalente a:

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

Un predicado no significa * tiene * que ser una función anónima. –

+0

Para métodos que toman un predicado como un argumento (List.FindAll() por ejemplo), sería bueno si el compilador reconoce Func como un predicado válida, ya que son funcionalmente equivalentes. Pero puede ejecutarlo a través de un lambda como: 'var x = MyList.FindAll (i => isEven (i));' – Graham

3

predicado define un conjunto de criterios, mientras que la expresión lambda es una función anónima. Puedes usar lambda ej. como un predicado, pero eso no quiere decir que sean la misma cosa.

Predicate

Lambda expression

+1

Bien, pero ¿cuál es la diferencia exactamente? – Phil

Cuestiones relacionadas