之前对委托的理解,一直局限于“委托就类似于C++中强类型的函数指针”。今天听老马跟我一讲,颇有拨云见日之感。
老马今天对我说,委托,就是定义一个传递方法的规范。
大家都说委托是一个类型,事件是个字段成员。那么既然委托是个类型,那里面有哪几部分组成来呢?
一般委托由三部分组成,分别是target,methodPtr和delegateArray。
target指的是该委托所指向的方法的所有者。若委托指向一个静态方法,例如,string.IsNullOrEmpty(),则target=null,若委托是一个实例方法,比如string s="abc",s.SubString(),则target=s。其目的就是根据不同类型的方法,获取方法所有者的数据。
methodPtr则是该委托所指向的方法,这个就不再多说了。
delegateArray,照我的理解是个委托队列,先进先出,维护着一组由三个部分组成的委托类型变量。即多播委托链