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();