首页 >后端开发 >C++ >为什么 C# 没有 IEnumerable 的 ForEach 扩展方法?

为什么 C# 没有 IEnumerable 的 ForEach 扩展方法?

Linda Hamilton
Linda Hamilton原创
2025-01-22 02:57:13896浏览

Why Doesn't C# Have a ForEach Extension Method for IEnumerable?

缺少 IEnumerable ForEach 扩展的奇怪案例

最近关于 C# 缺少 Zip 函数的讨论引发了一个相关问题:为什么 C# 不为广泛使用的 ForEach 接口提供 IEnumerable 扩展方法? 有趣的是,只有 List<T> 包含此功能。

解开谜团

这个省略是性能优化吗?还是有更深层次、根本的原因? 有几种理论试图解释这一明显的差距。

内置foreach优势

一种观点表明,C# 的内置 foreach 语句足以满足大多数迭代需求。 其简洁易读的语法通常是首选:

<code class="language-csharp">foreach (Item item in list)
{
    item.DoSomething();
}</code>

这与扩展方法的更详细语法形成对比:

<code class="language-csharp">list.ForEach(item => item.DoSomething());</code>

ForEach扩展的论点

然而,其他人争论 ForEach() 扩展方法在特定情况下的实际好处。 这些好处包括:

  • 改进的类型安全性: 扩展方法提供编译时类型检查,与 foreach 语句的运行时检查不同。
  • 简化的语法:它简化了委托的调用,如“objects.ForEach(DoSomething);”所示。
  • 方法链接潜力:虽然可能容易过度使用,但链接 ForEach() 调用的能力是一个引人注目的优势。

视角的转变

最初持怀疑态度,现在有些人认识到 ForEach() 扩展方法在某些场景中的价值。 这次重新评估表明微软可能会考虑在未来的框架版本中添加标准化的ForEach方法。

IEnumerable 缺少这种扩展方法仍然是一个讨论的话题。 鉴于潜在的优势,开发者社区期待进一步的发展,希望看到 C# 扩展库能够解决这一差距。

以上是为什么 C# 没有 IEnumerable 的 ForEach 扩展方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn