在ASP.NET MVC中添加新的强类型视图时,会显示以下奇怪的类:
alt text http://i39.tinypic.com/ixa1yh.jpg
这些是什么?
小智 5
这些是编译器生成的类来处理闭包.它们不是ASP.NET MVC独有的.
该类将使编译器生成以下类之一:
public class Foo
{
private bool _bar = true;
public Func<bool> HelloClosure()
{
return () => _bar;
}
}
Run Code Online (Sandbox Code Playgroud)
当Foo之外的某个人调用HelloClosure时,他们会返回一个返回该特定Foo实例的链接的函数.想象一下,我们不立即执行该功能,GC出现并收集Foo.现在当我们执行函数时会发生什么?
var fooInstance = new Foo();
var func = fooInstance.HelloClosure();
fooInstance = null;
GC.Collect();
// assuming fooInstance is collected
var result = func.Invoke();
Run Code Online (Sandbox Code Playgroud)
这些自动生成的类管理函数和实例之间的这些依赖关系,这样我们就不会遇到这样的情况.
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |