解决方案 »

  1.   

    比如说我们写public delegate void CompletedEventHandler(TestCaseBase sender);
    编译之后使用工具看一下,可以发现编译出来的结果是(MSIL语言).class auto ansi sealed nested public CompletedEventHandler
        extends [mscorlib]System.MulticastDelegate
    {
        .method public hidebysig specialname rtspecialname instance void .ctor(object 'object', native int 'method') runtime managed
        {
        }    .method public hidebysig newslot virtual instance class [mscorlib]System.IAsyncResult BeginInvoke(class WpfEngine.TestCaseBase sender, class [mscorlib]System.AsyncCallback callback, object 'object') runtime managed
        {
        }    .method public hidebysig newslot virtual instance void EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed
        {
        }    .method public hidebysig newslot virtual instance void Invoke(class WpfEngine.TestCaseBase sender) runtime managed
        {
        }}
      

  2.   

    在创建一个delegate的时候只需要一行简单的语句就可以。比如:public delegate void MyTaskEventHandler(int taskId);但是当编译之后系统会自动为你的delegate生成一个Class, 这个Class会继承自System.MulticastDelegate。所以委托的实质就是一个Class。只是你能做的就是使用delegate关键字去定义一个新的委托。