首页 新闻 搜索 专区 学院

闭包延长了委托的作用域?

1
悬赏园豆:10 [待解决问题]

上代码

         internal class Program
    {
        static void Main(string[] args)
        {
            
            Func1();
            GC.Collect();
            Console.WriteLine("End");
            Console.ReadLine();
        }
        static void Func1()
        {
            A a = new A();
            a.Callback((str)=>Console.WriteLine(str));
        }
        
        static void Callback(Action<string> success)
        {
            Task.Run(() => {
                Task.Delay(10 * 500).Wait();
                success("Ok");//为啥能正常运行,是因为闭包延长了success的作用域么?
            });
        }
    }
    class A 
    {
        public void Func1()
        {
            Callback((str) => Console.WriteLine(str));
        }

       public void Callback(Action<string> success)
        {
            Task.Run(() => {
                Task.Delay(10 * 500).Wait();
                  success.Invoke("Ok");//为啥能正常运行,是因为闭包延长了success的作用域么?
            });
        }
    }

问:Task中为啥success 能正常执行?闭包提升了success引用的方法的作用域么?提升到哪里了?

GYY_顽石的主页 GYY_顽石 | 初学一级 | 园豆:7
提问于:2022-09-30 17:08
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册