问题描述
语言中已经foreach
包含一个语句,大部分时间都可以完成这项工作。
我不想看到以下内容:
list.ForEach( item =>
{
item.DoSomething();
} );
代替:
foreach(Item item in list)
{
item.DoSomething();
}
更清晰、更容易阅读,尽管打字时间可能会更长。
但是,我必须承认我在这个问题上改变了立场;在ForEach()
某些情况下,扩展方法确实很有用。
- 类型检查:foreach 在运行时完成,
ForEach()
在编译时完成(Big Plus!) - 调用委托的语法确实简单得多:objects.ForEach(DoSomething);
- ForEach() 可以被链接起来:尽管这种功能的邪恶/有用性有待讨论。
这些都是这里很多人提出的重要观点,我可以理解为什么人们缺少这个功能。我不介意微软在下一次框架迭代中添加标准的 ForEach 方法。
解决方法
受到另一个询问缺失Zip
功能的问题的启发:
为什么界面上没有ForEach
扩展方法?IEnumerable
还是在任何地方?唯一获得ForEach
方法的类是List<>
.
是否有它丢失的原因,也许是性能?