谓词<T>超过Func <T,bool>的优势?

Rya*_*yan 5 .net c# delegates

使用谓词而不是普通委托有什么价值吗?以下面的例子,我没有看到任何.

Predicate<int> isEven = delegate(int x) { return x % 2 == 0; };
Console.WriteLine(isEven(1) + "\r\r");

Func<int, bool> isEven2 = delegate(int x) { return x % 2 == 0; };
Console.WriteLine(isEven(1) + "\r\r");
Run Code Online (Sandbox Code Playgroud)

Mar*_*ade 5

他们实际上是一样的.Predicate<T>是一个委托类型,已添加到基类库中,用于列表和数组Find()方法.这是在LINQ之前,当时更普遍Func的代表家庭被引入.您甚至可以编写自己的委托类型并使用它:

delegate bool IntPredicate(int x); 

static void Main()
{
   IntPredicate isEven = delegate(int x) {return x % 2 == 0;};
   Console.WriteLine(isEven(1) + "\r\r");
}
Run Code Online (Sandbox Code Playgroud)