c# - index - ''Lista<T>.ForEach()'' y mutabilidad
recorrer array c# foreach (2)
Quiero traducir todos los puntos en una List<T>
. Esto funciona:
for (int i = 0; i <PolygonBase.Count; ++i)
{
PolygonBase[i] = PolygonBase[i] + MousePos;
}
Pero el uso de List<T>.ForEach
no:
PolygonBase.ForEach(v => v += MousePos);
Ideas?
Para cada uno no es mutable, no cambia la estructura de datos de ninguna manera. Mira esta amenaza Usar declaraciones lambda condicional con un foreach Acción en una lista
Su código actual simplemente está reasignando la variable local v
a un nuevo valor, no se refiere al valor original en la lista. Es el equivalente de escribir:
foreach(int v in PolygonBase)
{
v += MousePos;
}
Para volver a escribir el valor original, use ConvertAll
:
PolygonBase.ConvertAll(v => v += MousePos);