Func和之间的区别
Action只是您是否希望委托返回一个值(使用
Func)或不返回(使用
Action)。
Func在LINQ中可能是最常用的-例如在投影中:
list.Select(x => x.SomeProperty)
或过滤:
list.Where(x => x.Somevalue == someOtherValue)
或键选择:
list.Join(otherList, x => x.FirstKey, y => y.SecondKey, ...)
Action通常用于诸如
List<T>.ForEach:对列表中的每个项目执行给定的操作。我用这个少往往比
Func,虽然我 也
有时使用无参数的版本,喜欢的东西
Control.BeginInvoke和
Dispatcher.BeginInvoke。
Predicate实际上只是一个特殊情况
Func<T,bool>,在所有代表
Func和大多数
Action代表出现之前就引入了。我怀疑,如果我们就已经有了
Func,并
Action在他们的各种名目,
Predicate就不会被引入…虽然它
确实 给与了一定意义上的使用委托的,而
Func并
Action用于广泛不同的目的。
Predicate主要用于在
List<T>对等的方法
FindAll和
RemoveAll。


![Func vs. Action vs. Predicate [重复] Func vs. Action vs. Predicate [重复]](http://www.mshxw.com/aiimages/31/576323.png)
