突っ込みを頂いたので今更返答をば。突っ込み頂いた内容について考察してみたりします。頂いたコード例は以下。func();}//0//1//2こちらのコードについて考えてみようかと。全部を理解しようとすると追えなくなるので一個一個確認する。Console.WriteLine(k)まずは上記のコードですが「int型の引数に対してAction型のラムダ式を返す」ラムダ式、つまりFuncを定義しています。Console.WriteLine(k)))(i)こいつについてですが、やってる事はFuncのラムダ式にint型引数iを渡して関数実行し、Action型のラムダ式を返しています。なんでこれを行うとうまくfor文内の値がうまくラムダ式のスコープに保存されるのか。理由自体は単純で、ラムダ式が参照する変数を変えてるからです。Func型ラムダ式の変数kを参照という形で、別の変数を参照しています。ラムダ式のスコープ保存ですが、これって値の保存じゃなくて、変数の参照を保存してるだけなんですね。10結果は10となります。単純に上位スコープの"値"を保存しているので有れば、Console.WriteLineは0になるはずです。結果を見てわかるとおりでConsole.WriteLineの実行結果は10です。したがって、「ラムダ式の上位スコープ保存」とは上位スコープの"参照先"を保存しているもので、上位スコープの"値"を保存しているわけではないという結論です。