List.ForEach 方法和集合接口

发布于 2024-09-04 12:17:58 字数 248 浏览 3 评论 0 原文

在 .NET 3.5 列表中<>获得 ForEach 方法。我注意到 IList<> 上不存在这个或 IEnumerable<>这里的想法是什么?还有其他方法可以做到这一点吗?很好又简单的简短方法来做到这一点?

我问这个问题是因为我在一次演讲中,演讲者说总是使用更通用的接口。 但为什么我要使用 IList<>作为返回类型,如果我希望能够转身并使用 ForEach?然后我最终会将其投射回 List<> 。

In .NET 3.5 List<> gains a ForEach method. I notice this does not exist on IList<> or IEnumerable<> what was the thinking here? Is there another way to do this? Nice and simple short way to do this?

I ask because I was at a talk where the speaker said always use the more general interfaces.
But why would I use IList<> as a return type if I want to be able to turn around and use ForEach? Then I would just end up casting it back to a List<>.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

破晓 2024-09-11 12:17:58

这里的想法是什么?

您可以阅读 Eric Lippertblog 了解未添加此功能的原因。

还有其他方法可以做到这一点吗?很好又简单的简短方法来做到这一点?

为什么不直接使用 foreach 关键字呢?我发现它更具可读性。

foreach (var foo in ilist)
{
    // etc...
}

不过,如果您愿意,可以将 ForEach 扩展方法添加到 IEnumerable

public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
{
    foreach (T item in enumeration)
    {
        action(item);
    }
}

取自 此处

what was the thinking here?

You can read Eric Lippert's blog for the reasons why this feature wasn't added.

Is there another way to do this? Nice and simple short way to do this?

Why not just use the foreach keyword? I find it more readable.

foreach (var foo in ilist)
{
    // etc...
}

Though you can add a ForEach extension method to IEnumerable<T> if you want to:

public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
{
    foreach (T item in enumeration)
    {
        action(item);
    }
}

Taken from here.

话少情深 2024-09-11 12:17:58

它不在框架中(尚未),但 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.

又爬满兰若 2024-09-11 12:17:58

为什么 ForEach 不在 IEnumerable 中? Eric Lippert 在他的博客中很好地解释了这一点。基本上,LINQ 是功能性的(无副作用),而 ForEach 显然是非功能性的。

但是,为什么它不在 IList 中?嗯... 应该是

Why is ForEach not in IEnumerable<T>? Eric Lippert explains this nicely in his blog. Basically, LINQ is meant to be functional (no side effects), and ForEach is decidedly non-functional.

But, why is it not in IList<T>? Well... it should be!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文