c#更新列表中的项目
我有以下资料:c#更新列表中的项目,c#,list,foreach,C#,List,Foreach,我有以下资料: public class Item { public Item() { } public string Name {get; set;} } public static class Extension { public static Item Modify(this Item itm) { itm.Name = "Changed"; return itm; } } 然后在我的代码中实例化一
public class Item
{
public Item()
{
}
public string Name {get; set;}
}
public static class Extension
{
public static Item Modify(this Item itm)
{
itm.Name = "Changed";
return itm;
}
}
然后在我的代码中实例化一个列表
,并向其中添加10项
List<Item> items = new List<Item>(); // contains 10 items
.....
由于您的方法返回与它修改的
项相同的,因此您的foreach
循环已经完成了您想要的操作
您可以生成一个新列表并重新分配项
,以获得较短的代码:
items = items.Select(Modify).ToList();
foreach(items中的Item)itm.Modify()代码>当您在ForEach中调用Modify()时,列表中的项目将被更新,您无需执行任何特殊操作。由于项
是一个类(引用类型),因此将在Items集合中对其进行修改。如果修改该项,则不必返回它,它将作为参数进行修改。这实际上也意味着您可能也不应该返回它,因为如果调用方希望它返回一个新项而不修改参数(当这是方法签名时),这会让调用方感到困惑。使方法无效修改(此项itm)
。这样做有意义!我不知道为什么我要在列表中寻找Update()方法或类似的方法。。。当然是参考!
items = items.Select(Modify).ToList();