程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 委托揭秘(1)

委托揭秘(1)

編輯:關於C語言

參考:

框架設計(第二版):CLR Via C#——15.4 委托揭秘(P281)

正文:

代碼1-1,這是一個簡單的委托使用。

using System;
using System.Collections.Generic;
using System.Text;

namespace Delegate
{
 public class DelegateTest
 {
  protected delegate void MyDelegate();

  private void TestMethod() { }

  private void Method()
  {
   MyDelegate aMyDelegate = new MyDelegate(TestMethod);
   Method(aMyDelegate);
  }

  private void Method(MyDelegate aMyDelegate)
  {
   if (aMyDelegate != null)
   {
    aMyDelegate();
   }
  }
 }
}

代碼1-1

從表面上看,委托似乎很容易使用:用C#的delegate關鍵字來定義,用我們都熟悉的new操作符來構造委托實例,用我們熟悉的方法調用語法來調用回調函數(不過要用引用了委托對象的變量來代替方法名)。

然而,實際情況比前面幾個例子所演示的復雜得多。編譯器和CLR做了大量的幕後工作來隱藏復雜性。本節將集中講解編譯器和CLR是如何實現委托的。掌握這些知識有助於我們理解委托,並學會如何更好地使用它們。與此同時,本節還要適當地介紹委托的其它一些特征。

首先重新查看下面這行代碼:代碼1-2

public delegate void MyDelegate();

代碼1-2

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved