link如果是闭包,要防止lambda将局部变量带出,能不能举个例子,什么意思?

问题描述

link如果是闭包,要防止lambda将局部变量带出,能不能举个例子,什么意思?
link如果是闭包,要防止lambda将局部变量带出,能不能举个例子,什么意思?

解决方案

比如说

 class A{    private Func<SomeType> foo;        public void bar()        {            SomeType st = new SomeType();                foo = new Func<SomeType>(() => st);        }}

按理说st是一个局部变量,但是作为闭包,它会被带出,生命周期被延长得和A类型的对象的生命周期一样。

时间: 2024-12-24 21:12:33

link如果是闭包,要防止lambda将局部变量带出,能不能举个例子,什么意思?的相关文章

link中的lamda函数的carrying是什么意思?能不能举个例子?

问题描述 link中的lamda函数的carrying是什么意思?能不能举个例子? link中的lamda函数的carrying是什么意思?能不能举个例子? 解决方案 lz有空还是先学习下英语吧,推荐这个http://download.csdn.net/detail/caozhy/8543233 解决方案二: 你从哪看到的 carrying ? 解决方案三: 说的是currying么?http://www.cnblogs.com/fox23/archive/2009/10/22/intro-to

link中的闭包还是不太懂,能写个程序举例说明么?怎么用?

问题描述 link中的闭包还是不太懂,能写个程序举例说明么?怎么用? link中的闭包还是不太懂,能写个程序举例说明么?怎么用? 解决方案 比如 void foo() { int i = 1; Action action = new Action(() => { int j = i + 1; }) // error j = 2; } 在Lambda中,可以访问自由变量i,但是在foo中不能访问约束变量j,这就是闭包.

link中的闭包怎么用?它和Lamda表达式相比有什么优势?

问题描述 link中的闭包怎么用?它和Lamda表达式相比有什么优势? link中的闭包怎么用?它和Lamda表达式相比有什么优势? 解决方案 闭包不是功能,谈不上用.闭包是指,匿名函数可以访问其定义块上的自由变量,好处就是不用传递参数了.

link中使用闭包可以代替参数么?那为什么还要参数呢?

问题描述 link中使用闭包可以代替参数么?那为什么还要参数呢? link中使用闭包可以代替参数么?那为什么还要参数呢? 解决方案 (1)委托的原型要求 (2)不用参数,怎么知道变量的上下文呢?代码如何重用呢?

书上说link中的闭包和函数副作用两大概念怎么才能理解?详细一些,谢谢

问题描述 书上说link中的闭包和函数副作用两大概念怎么才能理解?详细一些,谢谢 书上说link中的闭包和函数副作用两大概念怎么才能理解?详细一些,谢谢 解决方案 函数的副作用是指,函数调用共享的变量,或者函数的运行除了参数以外,还涉及外部的状态.闭包是指,在匿名函数内部访问自由变量.

link中的闭包能代替全局变量么?它和全局变量有什么区别?

问题描述 link中的闭包能代替全局变量么?它和全局变量有什么区别? link中的闭包能代替全局变量么?它和全局变量有什么区别? 解决方案 闭包使得匿名函数可以访问作用域之外的变量,而全局变量使得程序处处可以访问,两者是不同的.

link中能否闭包调用成员变量?还是只能调用函数变量?

问题描述 link中能否闭包调用成员变量?还是只能调用函数变量? link中能否闭包调用成员变量?还是只能调用函数变量? 解决方案 可以,直接使用就可以了.

link环境下如何用语句从事件中拿出函数?事件怎么返回函数?

问题描述 link环境下如何用语句从事件中拿出函数?事件怎么返回函数? link环境下如何用语句从事件中拿出函数?事件怎么返回函数? 解决方案 http://bbs.csdn.net/topics/380242007

link中的变量分配问题?

问题描述 link中的变量分配问题? link中如果改变lamda变量,需要回收变量么?如何释放? 解决方案 看什么变量,如果是闭包,要防止lambda将局部变量带出.