'List<T>.ForEach()' と可変性
-
15-11-2019 - |
質問
すべてのポイントを翻訳したい 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 アクションで条件付きラムダ ステートメントを使用する
所属していません StackOverflow