次のコードを使用して、IEnumerableをステップ実行しました。
IEnumerable<Thing> things = ...;
foreach (Thing thing in things)
thing = method(thing);
反復変数であるものを参照しているので、コンパイラーはそれに同意しません。もちろん、代わりに、リスト内の基になるオブジェクトに影響を与えるつもりです。それ、どうやったら出来るの?
今のところ、数値化された反復を使用して回避策を実行しましたが、2つの問題があります。一つには、私見をコーディングするのは良くありません。それに加えて、 IEnumerableからIListに変更する必要があります(またはListを使用する必要がありますか?!)。これは、物事が大きくなると腰に噛み付きます。
//List<Thing> things = ...;
IList<Thing> things = ...;
for (int i = 0; i < things.Count(); i++)
things[i] = method(things[i]);