林克全VS福拉奇

本文关键字:VS 林克 | 更新日期: 2023-09-27 18:32:43

嗨,我正在尝试了解Linq中All和ForEach之间的差异。

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

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

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

林克全VS福拉奇

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

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

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

请注意,List<T>.ForEach实际上已从 WinRT 框架中删除,因为它实际上并没有增加很多价值。 埃里克·利珀特(Eric Lippert)写了一篇关于使用foreach而不是List<T>.ForEach的精彩文章。