如果我将以下代码看作Javascript代码,那么它会有意义......但是Main中的call action()是如何产生i的NullReferenceException的呢? Action是否抓住了像JavaScript这样的东西? Thanx提前给所有人。
public class Program
{
static void Main(string[] args)
{
var p = new Program();
var action = p.method();
action();
Console.ReadKey();
}
public Action method()
{
var i = 6;
Action action = () => Console.WriteLine(i);
i++;
return action;
}
}
OUTPUT>大于7
答案 0 :(得分:0)
在method
中创建的lambda捕获lambda中引用的所有变量。
请参阅此文章:https://blogs.msdn.microsoft.com/matt/2008/03/01/understanding-variable-capturing-in-c/