委托如何获取方法地址?

时间:2014-12-24 11:23:02

标签: c# delegates

我想知道c#中的委托如何获得方法地址
在运行时之前无法确定方法地址 那么,委托如何在内存中找出方法地址?如何在幕后工作

1 个答案:

答案 0 :(得分:-1)

我确实知道,但我认为它的工作方式与旧的C相同。

在编译和链接阶段,每个方法都有一个相对于可执行文件开头的固定地址。您在代码中提到的所有内容的地址都放在EXE标题的表格中。此表称为重定位

在运行OS的阶段,将应用程序加载到空闲内存,重新计算重定位表中的所有地址,然后用新的(绝对)地址修改EXE的映像。

实际上,运行算法稍微复杂一些,详细信息可以在wiki中找到。