在List <T> ForEach()中设置多个属性?

给定一个类:

class foo { public string a = ""; public int b = 0; } 

然后是一个通用的列表:

 var list = new List<foo>(new []{new foo(), new foo()}); 

如果我要在下面的List<T> ForEach()方法中分配多个属性,有没有更简单的方法来做到这一点? 希望我有点厚。

 // one property - easy peasy list.ForEach(lambda => lambda.a="hello!"); // multiple properties - hmm list.ForEach(lambda => new Action(delegate() { lambda.a = "hello!"; lambda.b = 99;}).Invoke()); 

编辑:思想ForEach()是一个LINQ扩展方法,当它实际上是List<T>哎呀!

所有你需要做的是引入一些括号,以便你的匿名方法可以支持多行:

 list.ForEach(i => { ia = "hello!"; ib = 99; }); 

匿名方法是你的朋友

 list.ForEach(item => { item.a = "hello!"; item.b = 99; }); 

MSDN:

  • 匿名方法(C#编程指南)
 list.ForEach(lamba=>lambda.a="hello!"); 

 list.ForEach(item=>{ item.a = "hello!"; item.b = 99; }); 

当然,您也可以在创build列表时将其分配给他们:

 var list = new List<foo>(new []{new foo(){a="hello!",b=99}, new foo(){a="hello2",b=88}}); 

老实说,这里真的不需要使用List.ForEach:

 foreach (var item in list) { item.a="hello!"; item.b=99; } 
 list.ForEach(i => i.DoStuff()); public void DoStuff(this foo lambda) { lambda.a="hello!"; lambda.b=99; }