6

のすべてのポイントを翻訳したいList<T>。これは機能します:

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

しかし、使用List<T>.ForEachはしません:

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

アイデア?

4

1 に答える 1

11

現在のコードは、ローカル変数を新しい値に再割り当てしているだけですv。リスト内の元の値を参照しているわけではありません。これは、次のように書くのと同じです。

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

元の値に書き戻すには、次を使用しますConvertAll

PolygonBase.ConvertAll(v => v += MousePos);
于 2011-02-17T20:59:13.543 に答える