List.ForEach 方法和集合接口
在 .NET 3.5 列表中<>获得 ForEach 方法。我注意到 IList<> 上不存在这个或 IEnumerable<>这里的想法是什么?还有其他方法可以做到这一点吗?很好又简单的简短方法来做到这一点?
我问这个问题是因为我在一次演讲中,演讲者说总是使用更通用的接口。 但为什么我要使用 IList<>作为返回类型,如果我希望能够转身并使用 ForEach?然后我最终会将其投射回 List<> 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以阅读 Eric Lippert 的 blog 了解未添加此功能的原因。
为什么不直接使用 foreach 关键字呢?我发现它更具可读性。
不过,如果您愿意,可以将
ForEach
扩展方法添加到IEnumerable
:取自 此处。
You can read Eric Lippert's blog for the reasons why this feature wasn't added.
Why not just use the foreach keyword? I find it more readable.
Though you can add a
ForEach
extension method toIEnumerable<T>
if you want to:Taken from here.
它不在框架中(尚未),但 Rx 添加了 .Run (此 IEnumerable 可枚举)扩展方法的作用与 List 的自定义 ForEach 相同。在它成为标准框架的一部分之前,您必须编写自己的框架或使用额外的依赖项。
It's not in the framework (yet) but Rx adds the .Run(this IEnumerable enumerable) extension method that does the same as List's custom ForEach. Until this is part of the standard framework you'll have to write your own or use the extra dependency.
为什么
ForEach
不在IEnumerable
中? Eric Lippert 在他的博客中很好地解释了这一点。基本上,LINQ 是功能性的(无副作用),而ForEach
显然是非功能性的。但是,为什么它不在
IList
中?嗯... 应该是!Why is
ForEach
not inIEnumerable<T>
? Eric Lippert explains this nicely in his blog. Basically, LINQ is meant to be functional (no side effects), andForEach
is decidedly non-functional.But, why is it not in
IList<T>
? Well... it should be!