嗨,我想了解 Linq 中 All 和 ForEach 之间的区别。
我知道 All 用于检查条件并在满足谓词时返回 bool 。但是当我在谓词中有一个赋值时,它就可以正常工作并且不会抱怨。
在这种情况下,ForEach 有什么用?或者什么情况下使它使用 ForEach
这可能有点傻,但需要知道意义
ForEach
LINQ中实际上没有(故意)。有一个List<T>.ForEach
方法,它对列表中的每个对象运行一个操作。
主要区别在于All
过滤器 - 如果所有项目都与谓词匹配,则返回 true。 List<T>.ForEach
存在以产生副作用 - 您对列表中的每个项目运行一些操作。
一般来说,我会避免使用 LINQ 进行会导致副作用的查询(即:不要在查询中执行操作),而是在foreach
之后将它们放入循环中。这使得意图非常明确,这有助于可维护性。
请注意,List<T>.ForEach
它实际上已从 WinRT 框架中删除,因为它实际上并没有增加很多价值。Eric Lippert 写了一篇关于使用foreach
而不是List<T>.ForEach
.