借助真实示例及其用法,有人可以帮助我理解以下内容:
Func和之间的区别Action只是您是否希望委托返回一个值(使用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。
List<T>.ForEach
Control.BeginInvoke
Dispatcher.BeginInvoke
Predicate实际上只是一个特殊情况Func<T, bool>,在所有代表Func和大多数Action代表出现之前就引入了。我怀疑,如果我们就已经有了Func,并Action在他们的各种名目,Predicate就不会被引入…虽然它 确实 给与了一定意义上的使用委托的,而Func并Action用于广泛不同的目的。
Predicate
Func<T, bool>
Predicate主要用于在List<T>对等的方法FindAll和RemoveAll。
List<T>
FindAll
RemoveAll