我是C#的初学者,只是关于C#中Predicate和Func委托之间差异的问题
我们知道:
public delegol bool Predicate< in T>(T obj);
公共代表人员TResult Func< in T,…
Predicate<T> 随着泛型的引入在.NET 2.0中引入。这是一个代表拿一个参数并返回一个 bool 。
Predicate<T>
bool
但是,随着.NET 3.5中LINQ的引入,确定了两个需求 家庭 通用类型 - Func 和 Action (不同之处在于他们是否返回任何东西)接受 <击> 16 击> 4 1 通用输入参数,并且在返回类型中是通用的。如果 Func 先存在, Predicate<T> 永远不会被创造出来。这是一种不必要的专门委托类型。
Func
Action
但是出于向后兼容的原因,他们现在不能 去掉 Predicate<T> 从框架。 一些 可能会争辩说它的名字确实传达了特定的语义,但我很难找出许多情况 Func<T,bool> (要么 Func<T1,T2,bool> 等)不会被视为谓词。
Func<T,bool>
Func<T1,T2,bool>
1 4在.NET 3.5中,16在.NET 4及更高版本中。