小编典典

为什么选择功能 代替谓词?

c#

这只是一个好奇心问题,我想知道是否有人对以下问题有一个好的答案:

在.NET Framework类库中,我们有例如以下两种方法:

public static IQueryable<TSource> Where<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

public static IEnumerable<TSource> Where<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

他们为什么使用Func<TSource, bool>代替Predicate<TSource>?似乎Predicate<TSource>仅由List<T>和使用Array<T>,而Func<TSource, bool>几乎所有QueryableEnumerable方法以及扩展方法都使用… …这是怎么回事?


阅读 320

收藏
2020-05-19

共1个答案

小编典典

虽然Predicate已经在同一时间被引入List<T>,并Array<T>在.NET
2.0中,不同的FuncAction变异都来自.NET 3.5。

因此,这些Func谓词主要用于LINQ运算符中的一致性。作为.NET
3.5,有关使用的Func<T>Action<T>方针状态

不要使用新的LINQ类型Func<>Expression<>而不要使用自定义委托和谓词

2020-05-19