泛型 - 在List <T>中的每个对象上调用一个方法

Rya*_*yan 26 c# generics

有没有办法在List中的每个对象上调用一个方法 - 例如

代替

List<MyClass> items = setup();

foreach (MyClass item in items)
   item.SomeMethod();
Run Code Online (Sandbox Code Playgroud)

你可以做点什么

foreach(items).SomeMethod();
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*sio 48

是的,List<T>有:

items.ForEach(item => item.SomeMethod())
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这只适用于List<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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,你可以在实现的任何东西上使用它IEnumerable<T>......不仅仅是List<T>


Tim*_*ker 15

items.ForEach(i => i.SomeMethod());
Run Code Online (Sandbox Code Playgroud)