2011-02-17 22 views
5

Quiero traducir todos los puntos en un List<T>. Esto funciona:'Lista <T>. ForEach()' y mutabilidad

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?

+0

quizás the foreach devuelve una nueva lista? – Marco

Respuesta

11

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 la escritura:

foreach(int v in PolygonBase) 
{ 
    v += MousePos; 
} 

Para escribir de nuevo al valor original, utilice ConvertAll:

PolygonBase.ConvertAll(v => v += MousePos); 
+0

Ah, gracias. Estaba buscando obtener un foreach por referencia, pero eso es demasiado C++ para C# ... – Tili

Cuestiones relacionadas