手机版

分析:的内在原理 净笔记

时间:2021-11-20 来源:互联网 编辑:宝哥软件园 浏览:

首先要搞清楚什么是委托。相信大家对委托并不陌生,委托其实是方法签名定义的一种类型。关于委托的详细介绍,可以参考MSDN的介绍。链接为:http://msdn . Microsoft.com/zh-cn/library/vstudio/ms 173171 . aspx,这里就不具体介绍了;在这篇文章中,我主要想告诉你代表团的内部结构是什么。让我们通过一个简单的演示来回顾委托:复制代码如下:使用系统;使用系统。集合。通用;使用系统。Linq使用系统。文字;使用系统。线程化。任务;指向方法的namespace _01Delegate{ //约束的签名是强类型指针公共委托int adddele (int a,int b);类程序{ static void main(string[]args){//定义了一个委托变量,在指向第一个方法时注意在new关键字后使用=adddele del static=new adddele(add);//使用delegate:static方法console.writeline的委托(delstatic (3,4));//委托程序p=实例方法的新程序();AddDele DeLinestment=new AddDele(p . AddInstance);//输出:9 console . write line(delinstance(4,5));控制台。ReadKey();}//static方法static int add (int a,int b){ return a b;}//instance方法public int add instance (int a,int b){ return a b;}}}在上述代码中,委托分别用于调用静态方法和实例方法。如果这段代码看起来还是很难,建议用我之前提供的链接来巩固delegate的相关内容。起点:委托的内部结构可以分为三个部分:_target、_methodPtr和委托链;(以上面的演示为例。)__target:顾名思义就是委托的目标函数。如果是静态方法,_ target:为空;如果是实例方法,_target指向当前实例。在上面的例子中,delInstance的_target的值是p(p(Program)的一个实例);_ methodptr3360方法指针,指向内存中该方法的地址;委托链:由=操作形成的委托链实际上一次指向一个方法;我简单画了一个图来描述代表团的内部结构:(下图)

这些都是我的理解。如果有错误,欢迎大家指出来,互相讨论。希望这篇文章对你理解委托有所帮助,同时记录自己的学习积累,以便提升自己。

版权声明:分析:的内在原理 净笔记是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。