是。最重要的部分是包含lambda实现的方法现在是实例方法。
您可以看到一个代表作为中间人的委托,它通过Invoke接收实例调用,并根据实现方法的调用约定调度该调用。
请注意,有一些平台ABI要求,这些要求指定如何传递参数,如何返回结果,通过寄存器传递哪些参数以及在哪些参数中传递“
this”,等等。违反这些规则可能会对依赖堆栈遍历的工具(例如调试器)产生严重影响。
现在,如果实现方法是实例方法,则在委托内部唯一需要发生的就是将“
this”(即在调用时的委托实例)修补为封闭的Target对象。此时,由于其他所有内容都已经存在,因此委托可以直接跳转到实现方法主体。在许多情况下,这比在实现方法是静态方法的情况下需要做的工作少得多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)