何时使用动作委托代替谓词委托

时间:2019-03-08 06:10:32

标签: c#

您何时会在操作代理上使用谓词代理?

例如,为什么List<string>.RemoveAll()要求使用Predicate<string>而不是Action<string>?我想是因为Action<string>只能返回void。那么它们之间的唯一区别是委托的返回类型吗?

很抱歉,如果这太含糊,我想将细微差别和条款笼罩在脑海中。

3 个答案:

答案 0 :(得分:1)

它们完全不同-Action代表void函数; PredicateFunc<T, bool>的较旧版本-一个接受对象并返回布尔值的通用函数。使用取决于需要,但决不能在这两种类型之间进行选择。

答案 1 :(得分:1)

谓词委托(顾名思义)构成一个 Predicate ,它将匹配条件/谓词并返回bool。如签名所述,作为Action委托的人不会返回任何内容(单向工作)。

List<string>.RemoveAll()需要一个谓词原因,如果要从列表中删除与特定条件匹配的所有元素T,该怎么办?

答案 2 :(得分:-1)

这里有很漂亮的描述。

https://stackoverflow.com/a/55058355/11100119