在列表中设置多个属性<;T>;ForEach()
本文关键字:gt ForEach 列表 lt 设置 属性 | 更新日期: 2023-09-27 18:22:10
给定一个类:
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 => { i.a = "hello!"; i.b = 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;
});
当然,你也可以在创建列表时分配它们,比如:
var list = new List<foo>(new []{new foo(){a="hello!",b=99}, new foo(){a="hello2",b=88}});
list.ForEach(i => i.DoStuff());
public void DoStuff(this foo lambda)
{
lambda.a="hello!";
lambda.b=99;
}
老实说,这里真的没有必要使用List.ForEach:
foreach (var item in list) { item.a="hello!"; item.b=99; }