Til*_*ili 5 c# foreach list mutability
我想翻译一个中的所有点List<T>.这有效:
for (int i = 0; i <PolygonBase.Count; ++i)
{
PolygonBase[i] = PolygonBase[i] + MousePos;
}
Run Code Online (Sandbox Code Playgroud)
但使用List<T>.ForEach不会:
PolygonBase.ForEach(v => v += MousePos);
Run Code Online (Sandbox Code Playgroud)
想法?
Rex*_*x M 11
您当前的代码只是将局部变量重新分配v给一个新值 - 它不会返回列表中的原始值.这相当于写作:
foreach(int v in PolygonBase)
{
v += MousePos;
}
Run Code Online (Sandbox Code Playgroud)
要写回原始值,请使用ConvertAll:
PolygonBase.ConvertAll(v => v += MousePos);
Run Code Online (Sandbox Code Playgroud)