Foreach和修改迭代变量

zsh*_*arp 2 c#

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

  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?
    }
Run Code Online (Sandbox Code Playgroud)

Ahm*_*eed 6

改为使用for循环:

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

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

var query = result.Select(o => GetInfo(o));
Run Code Online (Sandbox Code Playgroud)