我还是lambdas的新手,发现很难找到它的特定功能,但是可以为通用列表中的每个对象执行一个方法吗?与ConvertAll的工作方式类似,但不是转换,而是实际调用方法。
public class Mouse()
{
public void Squeak()
{
}
}
List<Mouse> mice = new List<Mouse>();
mice.Add(new Mouse());
mice.Add(new Mouse());
如何为每只鼠标调用方法吱吱声?
mice.???(m => m.Squeak());
答案 0 :(得分:5)
您可以使用List<T>.ForEach()
方法(see MSDN)执行此操作:
mice.ForEach(m => m.Squeak());
PS:问题的答案有多么有趣:
如何为每个鼠标调用方法Squeak ?
答案 1 :(得分:3)
请不要使用List<T>.ForEach
。它看起来像一个序列运算符。序列操作符不应有副作用。您正在使用看起来像序列运算符的东西,仅用于其副作用。相反,只需使用一个普通的无聊循环:
foreach(var mouse in mice) {
mouse.Squeak();
}
Eric Lippert撰写了一篇与此主题相关的精彩文章:foreach
vs. ForEach
。