林克全VS福拉奇
本文关键字:VS 林克 | 更新日期: 2023-09-27 18:32:43
嗨,我正在尝试了解Linq中All和ForEach之间的差异。
我知道 All 用于检查条件,如果满足谓词,则返回 bool。但是当我在谓词中有一个赋值时,它只是工作正常并且不会抱怨。
在这种情况下,ForEach 有什么用? 或者什么情况使它使用ForEach
这可能有点傻,但需要知道意义
LINQ 中实际上没有ForEach
(故意)。 有一个List<T>.ForEach
方法,它对列表中的每个对象运行操作。
主要区别在于All
是一个过滤器 - 如果所有项目都与谓词匹配,则返回 true。 List<T>.ForEach
存在以产生副作用 - 您对列表中的每个项目运行一些操作。
通常,我会避免使用 LINQ 进行会导致副作用的查询(即:不要在查询中执行操作),而是将它们放在 foreach
循环中。 这使得意图非常明确,这有助于可维护性。
请注意,List<T>.ForEach
实际上已从 WinRT 框架中删除,因为它实际上并没有增加很多价值。 埃里克·利珀特(Eric Lippert)写了一篇关于使用foreach
而不是List<T>.ForEach
的精彩文章。