List.ForEach方法和集合接口

时间:2010-06-02 21:46:20

标签: .net collections interface ienumerable ilist

在.NET 3.5列表中<>获得ForEach方法。我注意到这在IList<>上不存在或IEnumerable<>这里有什么想法?还有另一种方法吗?这很好很简单的方法吗?

我问,因为我正在谈论演讲者说总是使用更通用的界面。 但为什么我会使用IList<>作为返回类型,如果我想转身并使用ForEach?然后,我最终会将其转换回List<>。

3 个答案:

答案 0 :(得分:4)

  

这里的想法是什么?

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

  

还有其他办法吗?这很好很简单的方法吗?

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

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

如果您愿意,可以向ForEach添加IEnumerable<T>扩展程序:

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

取自here

答案 1 :(得分:1)

它不在框架中(但是)但Rx添加.Run(此IEnumerable可枚举)扩展方法,它与List的自定义ForEach相同。在这是标准框架的一部分之前,您必须自己编写或使用额外的依赖项。

答案 2 :(得分:1)

为什么ForEach不在IEnumerable<T>? Eric Lippert很好地解释了in his blog。基本上,LINQ意味着功能性(没有副作用),ForEach显然是无功能的。

但是,为什么它不在IList<T>?好吧...... it should be