C 學習 委託的理解

2021-10-01 23:12:50 字數 1683 閱讀 9816

1.委託的概念

委託(delegate)是一種儲存函式引用的資料型別委託是用返回型別和引數列表定義的變數。給定的委託型別可以匹配返回型別和引數與委託定義相同的函式。委託可以近似理解為函式指標,即可以實現把方法當作引數進行傳遞

1.1 委託的定義

委託的定義和函式類似,但是不帶函式體,並且必須使用delegate關鍵字。如下所示,定義了乙個委託,需要兩個double型別的引數,返回型別也是double:

delegate

double

processdelegate

(double param1,

double param2)

;

1.2 委託的例項化

定義了委託之後,就可以宣告該委託型別的變數:

processdelegate process;
將委託變數初始化為與該委託具有相同返回型別和引數列表的函式引用之後,就可以使用委託變數呼叫這個函式,就像變數是乙個函式一樣。

static

double

add(

double a,

double b)

process =

newprocessdelegate

(add)

;

委託還可以通過匿名方法來進行例項化,例如:

processdelegate process  =

delegate

(double a,

double b)

;

有了引用函式的變數後,就可以執行不能用其他方式完成的操作。例如,可以把委託變數作為乙個引數傳遞給乙個函式,使得該函式可以使用委託呼叫它引用的任何函式,而且在執行之前不必知道呼叫的是哪乙個函式。

1.3 委託使用示例

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace _1.delegate

static

double

subtract

(double a,

double b)

static

void

main

(string

args)

else

console.

writeline

("result:"

,process

(param1, param2));

console.

readkey()

;}}}

2.泛型委託

要定義泛型委託,只需宣告和使用乙個或多個泛型型別引數,例如:

delegate t1 mydelegate

t2>

(t1 a,

t2 b)

理解c 中委託

1.我們對委託做乙個總結 委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用if else switch 語句,同時使得程式具有更好的可擴充套件性。正確理解委託的列子 usingsystem usingsystem...

c 委託(個人理解)

個人理解來說,委託就是使用函式方法的乙個渠道,只不過這個渠道有些特殊,可以通過這個渠道使用乙個方法,同樣的是也可以通過這個渠道使用多個函式方法。首先問自己乙個問題,在程式語言的學習中,我們是怎樣使用自己定義的或者已存在的類的?無非這幾步 1.類的宣告2.類的例項化3.通過例項化的物件使用類裡面的變數...

如何理解C 委託

一 從下面的例子開始,理解委託變數本質 如上圖,condition是我定義的委託變數。這個委託變數的本質就是位址變數 即c語言當中的指標變數 它儲存的是方法的入口位址。當函式的呼叫者傳遞實參給這個位址變數 方法實際位址 然後執行 到if condition book 時,我們可以這樣形象化理解它 這...