Question

Je veux traduire tous les points dans un List<T>.Ceci fonctionne:

for (int i = 0; i <PolygonBase.Count; ++i) 
{
    PolygonBase[i] = PolygonBase[i] + MousePos;
}

Mais à l'aide de List<T>.ForEach ne pas:

PolygonBase.ForEach(v => v += MousePos);

Des idées?

Était-ce utile?

La solution

Votre code actuel est tout simplement ré-affectation de la variable locale v une nouvelle valeur, - il ne pas se référer à la valeur d'origine dans la liste.C'est l'équivalent de l'écriture:

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

Pour écrire la valeur d'origine, l'utilisation ConvertAll:

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

Autres conseils

ForEach n'est pas mutable, il ne change pas la structure de données en quelque sorte.Découvrez cette menace.À l'aide conditionnelle lambda états avec un foreach Action sur une liste

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top