微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 IEnumerable 上没有 ForEach 扩展方法?

如何解决为什么 IEnumerable 上没有 ForEach 扩展方法?

语言中已经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<>.
是否有它丢失的原因,也许是性能?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。