我想要翻译一个 List<T>
中的所有元素。这个方法可以实现:
for (int i = 0; i <PolygonBase.Count; ++i)
{
PolygonBase[i] = PolygonBase[i] + MousePos;
}
但使用 List<T>.ForEach
不会:
PolygonBase.ForEach(v => v += MousePos);
想法?
我想要翻译一个 List<T>
中的所有元素。这个方法可以实现:
for (int i = 0; i <PolygonBase.Count; ++i)
{
PolygonBase[i] = PolygonBase[i] + MousePos;
}
但使用 List<T>.ForEach
不会:
PolygonBase.ForEach(v => v += MousePos);
你当前的代码只是将局部变量v
重新赋值为一个新的值,它并没有引用列表中原来的值。这相当于写入:
foreach(int v in PolygonBase)
{
v += MousePos;
}
要将值写回原始值,请使用ConvertAll
:
PolygonBase.ConvertAll(v => v += MousePos);