Ugh*_*ent 4 .net c# delegates closures
在委托中调用静态方法似乎很简单,因为在调用委托本身时,它们的所有参数都将传递给它们. 但是,当一个实例方法被添加到委托时,'this'参数在委托调用期间似乎被忽略了,所以我只能想象它与委托本身一起保存 - 类似于一个闭包可以用于其他参数.
问:当实例方法传递给委托时,编译器是否会创建闭包,或者是否有不同的机制来完成此操作?
SLa*_*aks 7
没有.
的Delegate类有一个Target存储的值属性this调用该方法时通过. 换句话说,Delegate实际上存储了两件事:一个函数指针和第一个参数的值.
Delegate
Target
this
包含目标的委托称为封闭委托,因为它会关闭第一个参数.
实际上,这实际上就是闭包的工作方式.当编译器为委托创建闭包时,它将创建一个包含已关闭的变量的类,并将该类存储为委托Target.
有关更多信息,请参阅我的博文:
归档时间:
13 年,1 月 前
查看次数:
2355 次
最近记录: