缺少 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
语句的运行时检查不同。ForEach()
调用的能力是一个引人注目的优势。视角的转变
最初持怀疑态度,现在有些人认识到 ForEach()
扩展方法在某些场景中的价值。 这次重新评估表明微软可能会考虑在未来的框架版本中添加标准化的ForEach
方法。
IEnumerable
缺少这种扩展方法仍然是一个讨论的话题。 鉴于潜在的优势,开发者社区期待进一步的发展,希望看到 C# 扩展库能够解决这一差距。
以上是为什么 C# 没有 IEnumerable 的 ForEach 扩展方法?的详细内容。更多信息请关注PHP中文网其他相关文章!