WEB开发网
开发学院软件开发C语言 委托揭秘 阅读

委托揭秘

 2009-06-10 08:32:08 来源:WEB开发网   
核心提示: 首先重新查看下面这行代码:代码1-2publicdelegatevoidMyDelegate();代码1-2 看到这行代码时,编译器实际上会像下面这样定义一个完整的类:代码1-3publicclassMyDelegate:System.MulticastDelegate{//构造器pu

 首先重新查看下面这行代码:代码1-2

public delegate void MyDelegate();

代码1-2  

 看到这行代码时,编译器实际上会像下面这样定义一个完整的类:代码1-3

    public class MyDelegate : System.MulticastDelegate
    {
       //构造器
       public MyDelegate(Object aobject,IntPtr method);

       //方法的原型与源代码指定的相同
       public virtual void Invoke();

       //允许异步回调的方法
        public virtual IAsyncResult BeginInvoke(
           AsyncCallback callback, object aobject);

        public virtual void EndInvoke(IAsyncResult result);
    }

代码1-3

  编译器定义的类有4个方法:一个构造器、Invoke、BeginInvoke和EndInvoke。在本章,要重点解释构造器和Invoke方法。

 事实上,可以验证编译器确实会自动生成这个类,具体做法就是用ILDasm.exe来查看生成的程序集(assembly),如图1-1所示。

委托揭秘

图片看不清楚?请点击这里查看原图(大图)。 

图1-1 ILDasm.exe 显示了编译器为委托生成的元数据

 在这个例子中,编译器定义了一个类,名为MyDelegate,该类继承自 Framework Class Library(FCL)中定义的System.MulticastDelegate 类型(所有委托类型都继承自 MulticastDelegate)。

上一页  1 2 3 4 5  下一页

Tags:委托 揭秘

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接