質問

すべてのポイントを翻訳したい 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);

他のヒント

ForEach は変更可能ではなく、データ構造を一切変更しません。この脅威を確認してください。リストの foreach アクションで条件付きラムダ ステートメントを使用する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top