是否存在" Javascript环境"在C#中

时间:2017-08-01 00:01:13

标签: javascript c# delegates action

如果我将以下代码看作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

1 个答案:

答案 0 :(得分:0)

method中创建的lambda捕获lambda中引用的所有变量。

请参阅此文章:https://blogs.msdn.microsoft.com/matt/2008/03/01/understanding-variable-capturing-in-c/