代码之家  ›  专栏  ›  技术社区  ›  Ryan

泛型-对列表中的每个对象调用方法<T>

  •  23
  • Ryan  · 技术社区  · 14 年前

    有没有办法对列表中的每个对象调用一个方法。

    而不是

    List<MyClass> items = setup();
    
    foreach (MyClass item in items)
       item.SomeMethod();
    

    你可以这样做

    foreach(items).SomeMethod();
    

    任何内置的,扩展的方法,还是我太懒了?

    4 回复  |  直到 14 年前
        1
  •  54
  •   Brian Genisio    14 年前

    是的,开 List<T>

    items.ForEach(item => item.SomeMethod())
    

    奇怪的是,这只在 列表<T> IList<T> IEnumerable<T>

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

    然后,您可以在任何实现 ... 不仅仅是 列表<T>

        2
  •  15
  •   Tim Coker    14 年前
    items.ForEach(i => i.SomeMethod());
    
        3
  •  4
  •   Roman    14 年前

    ForEach 方法。也可以创建IEnumerable扩展方法, but it kind of goes against the spirit of Linq .

        4
  •  1
  •   Anya Hope    9 年前

    morelinq library

    items = items.Pipe<MyClass>(i => i.Text = i.UpdateText()).ToList()
    

    可能性是无穷的!:)