首页 > 代码库 > 捕获变量
捕获变量
1.认识捕获变量
static void Main(string[] args) { Action action = CaptureVariable(); action(); } static Action CaptureVariable() { int flag = 0; Action action = () => { flag++; Console.WriteLine("flag=" + flag); }; flag = 100; action(); return action; }
可以看出委托实例action内和action外都可以修改flag的值,是同一个flag变量,flag的作用域跟随委托实例action
2.捕获变量实现原理——没有捕获变量
static void Main(string[] args) { } static Action CaptureVariable() { int flag = 0; Action action = () => { Console.WriteLine(""); }; return action; }
——捕获flag变量
static void Main(string[] args) { } static Action CaptureVariable() { int flag = 0; Action action = () => { Console.WriteLine(flag); }; return action; }
如上图,编译时会在当前类内部新建一个类"<>c_DisplayClass0"维护变量flag
捕获变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。