有没有办法在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>