7

嗨,我想了解 Linq 中 All 和 ForEach 之间的区别。

我知道 All 用于检查条件并在满足谓词时返回 bool 。但是当我在谓词中有一个赋值时,它就可以正常工作并且不会抱怨。

在这种情况下,ForEach 有什么用?或者什么情况下使它使用 ForEach

这可能有点傻,但需要知道意义

4

1 回答 1

15

ForEachLINQ中实际上没有(故意)。有一个List<T>.ForEach方法,它对列表中的每个对象运行一个操作。

主要区别在于All过滤器 - 如果所有项目都与谓词匹配,则返回 true。 List<T>.ForEach存在以产生副作用 - 您对列表中的每个项目运行一些操作。

一般来说,我会避免使用 LINQ 进行会导致副作用的查询(即:不要在查询中执行操作),而是在foreach之后将它们放入循环中。这使得意图非常明确,这有助于可维护性。

请注意,List<T>.ForEach它实际上已从 WinRT 框架中删除,因为它实际上并没有增加很多价值。Eric Lippert 写了一篇关于使用foreach而不是List<T>.ForEach.

于 2013-09-25T16:50:13.593 回答