委托Roslyn中的缓存行为更改

委托Roslyn中的缓存行为更改,第1张

委托Roslyn中的缓存行为更改

是。最重要的部分是包含lambda实现的方法现在是实例方法。

您可以看到一个代表作为中间人的委托,它通过Invoke接收实例调用,并根据实现方法的调用约定调度该调用。

请注意,有一些平台ABI要求,这些要求指定如何传递参数,如何返回结果,通过寄存器传递哪些参数以及在哪些参数中传递“
this”,等等。违反这些规则可能会对依赖堆栈遍历的工具(例如调试器)产生严重影响。

现在,如果实现方法是实例方法,则在委托内部唯一需要发生的就是将“
this”(即在调用时的委托实例)修补为封闭的Target对象。此时,由于其他所有内容都已经存在,因此委托可以直接跳转到实现方法主体。在许多情况下,这比在实现方法是静态方法的情况下需要做的工作少得多。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5427553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存