迭代变量的Foreach和修改

本文关键字:修改 Foreach 变量 迭代 | 更新日期: 2023-09-27 18:28:31

这样做的正确方法是什么?

  foreach(Object obj in ObjectList<Object>)
   {
      Object changedObject= GetInfo(obj);
      obj=changedObject; //no good
      obj.prop1 = changedObject.prop1; //ok?
      obj.prop2 = changedObject.prop2; //ok?
      better way?
    }

迭代变量的Foreach和修改

使用for循环:

for (int i = 0; i < list.Count; i++)
{
    Object changedObject = GetInfo(list[i]);
    list[i] = changedObject;
}

如果您需要一个列表而不是IEnumerable<T>:,您也可以使用LINQ并附加.ToList()

var query = result.Select(o => GetInfo(o));

我认为您最好创建一个新的对象列表,即:

var newList = new List<Object>();
foreach(Object obj in ObjectList<Object>)
{
   newList.Add(GetInfo(obj));
}

然后用newList替换ObjectList,或者从您正在进行的中返回它