代码之家  ›  专栏  ›  技术社区  ›  Doug

C#[duplicate]中是否有“Javascript上下文”这样的东西

  •  0
  • Doug  · 技术社区  · 7 年前

    如果我将以下代码视为Javascript代码,这是有意义的……但是Main中的call action()怎么不会为我生成NullReferenceException呢?这个动作抓取了类似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;
        }
    
    }
    

    1 回复  |  直到 7 年前
        1
  •  0
  •   NetMage    7 年前

    在中创建的lambda method 捕获lambda中引用的任何变量。

    https://blogs.msdn.microsoft.com/matt/2008/03/01/understanding-variable-capturing-in-c/