16.1委託
有時我們需要將乙個函式作為另乙個函式的引數,這時就要用到委託(delegate)機制。委託是乙個較難講清楚的概念,筆者苦思數日,終於想出了乙個巧妙的例子。
下面我們設計乙個馬戲表演函式runcircus(),它的第乙個引數是代表動物的函式,傳給它什麼樣的動物,就進行什麼動物的表演。請新建乙個名為「delegate」的專案,然後新增如下**。
試一試:定義委託
code
//摘自《c#初學課堂》
被積函式
static
double
f1(double
x)//
被積函式
static
double
f2(double
x)//
被積函式的委託
delegate
double
integrand(
double
x);//
函式:定積分
static
double
definiteintegrate(
double
a, double
b, integrand f)
return
area;}//
進行定積分運算
《c#初學課堂》
只需傳給定積分函式definiteintegrate()相應的被積函式,就可計算出任何函式的定積分。
綜上所述,利用委託可以實現以函式為引數,提高程式的通用性。委託用關鍵字的delegate宣告,實際上建立一種委託相當於建立乙個從 system.delegate派生出來的類,類中有乙個呼叫列表,列表中包含著被委託函式的引用。與c++的函式指標相比,委託是一種型別安全的方式。
[轉貼請註明出處]
Delegate 委託複習 委託的基本概念
1 宣告乙個delegate物件,它應當與你想要傳遞的方法具有相同的引數和返回值型別。宣告乙個 的例子 public delegate int mydelegate string message 2 建立delegate物件,並將你想要傳遞的函式作為引數傳入。建立 物件的方法 1 mydelegat...
委託的基本概念
最近在看深入理解c 發現這是一本很不錯的書,將很多c 的知識點聯絡了起來,更像是一本c 歷史書,從c 1一步步介紹到c 4。所以準備一邊看,一邊整理讀書筆記。那麼就先從委託開始。委託是c 中乙個非常重要的概念,從c 1開始就有了委託這個核心概念,在c 2和c 3中委託又有了很多改進。通過委託,我們可...
委託的基本概念
最近在看深入理解c 發現這是一本很不錯的書,將很多c 的知識點聯絡了起來,更像是一本c 歷史書,從c 1一步步介紹到c 4。所以準備一邊看,一邊整理讀書筆記。那麼就先從委託開始。委託是c 中乙個非常重要的概念,從c 1開始就有了委託這個核心概念,在c 2和c 3中委託又有了很多改進。通過委託,我們可...