lambda表达式和.NET中的谓词有什么区别?

19

在.NET中,lambda表达式和谓词有什么区别?

2个回答

17

谓词是一个返回布尔值的委托(函数对象)。Lambda表达式可用于定义任何匿名函数,包括谓词。例如,使用lambda表达式表示谓词:

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

这在功能上等价于:

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

5
谓词并不一定要是匿名函数。 - Greg Hewgill
对于那些以 Predicate 作为参数的方法(例如 List.FindAll()),如果编译器能够将 Func<T, bool> 识别为有效的 Predicate,那就太好了,因为它们在功能上是等效的。但是你可以通过 lambda 表达式来运行它,例如:var x = MyList.FindAll(i => isEven(i)); - Graham

4
谓词定义了一组条件,而 Lambda 表达式是一个匿名函数。你可以将 Lambda 表达式用作谓词,但这并不意味着它们是相同的东西。
谓词:Predicate Lambda 表达式:Lambda expression

4
好的,但究竟有什么区别? - Phil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接