您何时会在操作代理上使用谓词代理?
例如,为什么List<string>.RemoveAll()
要求使用Predicate<string>
而不是Action<string>
?我想是因为Action<string>
只能返回void
。那么它们之间的唯一区别是委托的返回类型吗?
很抱歉,如果这太含糊,我想将细微差别和条款笼罩在脑海中。
答案 0 :(得分:1)
它们完全不同-Action
代表void函数; Predicate
是Func<T, bool>
的较旧版本-一个接受对象并返回布尔值的通用函数。使用取决于需要,但决不能在这两种类型之间进行选择。
答案 1 :(得分:1)
谓词委托(顾名思义)构成一个 Predicate ,它将匹配条件/谓词并返回bool
。如签名所述,作为Action委托的人不会返回任何内容(单向工作)。
List<string>.RemoveAll()
需要一个谓词原因,如果要从列表中删除与特定条件匹配的所有元素T
,该怎么办?
答案 2 :(得分:-1)