0

だから私はこのコードを持っているとしましょう:

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」が同じ変数を指しているためです。

デリゲートが作成されたときの状態のコピーを保持する方法はありますか?

4

1 に答える 1