委托内部构造



1. 委托的内部构造

  委托的内部构造是什么样的?   在一个委托对象被创建后,该委托的内部由三部分组成:”_methodPtr(方法指针)“、”_target(目标对象)“、”委托链(多播委托时才有,否则为空)“,具体的构造我们画张图来看看:

多播委托的内部构造:   当一个委托被创建出来后,在栈上存储指向它的引用,在堆中存储着它的实例。   在堆中的数据分为三个部分:_methodPtr存储委托指向方法的内存地址;_target保存该方法(委托指向的方法)所在的实例化对象,当该方法为静态方法时,这里为null,因为静态方法没有实例;委托链,当该委托是多播委托时,这里就由组成了委托数组,保存指向每一个委托方法的地址。   所以也可以这样描述:委托的内部保存着委托 要调用的方法的地址、该方法所在对象实例的地址、有其他的方法时,保存其他方法的地址。

参考:《CLR via c#》