だから私はこのコードを持っているとしましょう:
Func<int>[] list = new Func<int>[4];
for (int i = 0; i < 4; ++i)
{
list[i] = delegate
{
return i;
};
}
foreach (var f in list) Console.WriteLine(f());
出力は次のようになります。
4
4
4
4
デリゲートのすべての「i」が同じ変数を指しているためです。
デリゲートが作成されたときの状態のコピーを保持する方法はありますか?