ラムダ式
ラムダ式はローカルスコープの変数値を保存していると聞いたので試してみた。コード例は以下。
public class LambdaFactory { private static int x = 0; static public Func<int> Create() { //あえてここでローカル変数に代入 int y = ++x; return () => y; } } class Program { static void Main(string[] args) { Array.ForEach( Enumerable.Range(0,10).ToArray() , val => { //ここでラムダ式実行で、帰ってくる値はLambdaFactory#Createのローカルスコープだが・・・ Console.Write(LambdaFactory.Create()() + " "); }); Console.ReadLine(); } } //1 2 3 4 5 6 7 8 9 10
きれいに実行されている。うーん、この辺りはpython、javascriptと一緒なのね。