何时使用 Action Delegate 而不是 Predicate Delegate

你什么时候会使用谓词委托而不是动作委托?

例如,为什么List<string>.RemoveAll()需要 aPredicate<string>而不是 a Action<string>?我认为这是因为Action<string>只能返回一个void. 那么它们之间的唯一区别是委托的返回类型吗?

抱歉,如果这太含糊了,我正试图围绕细微差别和条款。


蓝山帝景
浏览 73回答 2
2回答

杨__羊羊

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

森林海

顾名思义,谓词委托构成一个谓词,它将匹配条件/谓词并返回bool。正如签名所说的动作委托不返回任何东西(一种工作方式)。List<string>.RemoveAll()需要谓词原因,如果您想T从列表中删除与特定条件匹配的所有元素怎么办?
打开App,查看更多内容
随时随地看视频慕课网APP