委託的概念

2021-04-24 07:55:29 字數 1369 閱讀 1540

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中委託又有了很多改進。通過委託,我們可...