2012-07-02 2 views

Antwort

12

Ein Prädikat ist Delegat (Funktionsobjekt), das einen booleschen Wert zurückgibt. Lambda expressions kann verwendet werden, um eine anonyme Funktion zu definieren, die Prädikate, z.B.

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

, die funktionell äquivalent zu::

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

Ein Prädikat haben nicht * * eine anonyme Funktion sein. –

+0

Für Methoden, die ein Prädikat als Argument verwenden (zB List.FindAll()), wäre es schön, wenn der Compiler Func als gültiges Prädikat erkennt, da sie funktional gleichwertig sind. Aber Sie können es einfach durch ein Lambda wie folgt ausführen: 'var x = MyList.FindAll (i => isEven (i));' – Graham

3

Predicate definiert eine Reihe von Kriterien, während Lambda-Ausdruck ist eine anonyme Funktion ein Prädikat in Form eines Lambda-Ausdrucks auszudrücken. Sie können Lambda ex verwenden. als ein Prädikat, aber das bedeutet nicht, dass sie dasselbe sind.

Predicate

Lambda expression

+1

Okay, aber was ist der Unterschied genau? – Phil

Verwandte Themen