首先来看一下lambda语法:
int someval = 5;
Func<int, int> k = x => x + someval;
someval = 7;
Console.WriteLine(k(3));
//以上代码的输出结果为 10;至于为什么是10可以思考一下,这是理解下面的关键
var values = new List<int> { 10, 20, 30 };
var func = new List<Func<int>>();
//下面这段代码和下面的foreach代码的原理,两段代码等价,
IEnumerator<int> ev = values.GetEnumerator();
while (ev.MoveNext()) {
int v = ev.Current;
func.Add(() => v);
}
//4.0 编译器是在循环外面定义 变量v,代码如下:
IEnumerator<int> ev = values.GetEnumerator();
int z;
while (ev.Mo