什麼是委託?

2021-07-03 15:37:33 字數 2747 閱讀 2057

思考::static關鍵字是什麼??

加上這個關鍵字,這個方法只能,在本類中使用!!!

簡記::想做什麼事情,但是又不確定,就用委託佔位;然後將方法作為傳遞!

1、什麼是委託?

委託就是把「方法」作為引數進行傳遞!

委託是一種「資料型別」,像類一樣(可以宣告委託型別變數)

2、定義的方法沒有返回值,那麼定義的委託也沒有返回值

3、定義的方法沒有引數,那麼定義的委託也沒有引數;

4、格式:

關鍵字  delegate  返回值型別 委託名字([資料型別  變數],[資料型別  變數],...);   

5、定義乙個沒有返回值的委託:

[code]

class

program

//1、定義一種方法

public

static

void

say()

//2、定義方法show來將方法 say 作為引數進行傳遞

public

static

void show(*** oo)//

此處的***可以理解為乙個類 oo就是宣告的引數

}[/code]

6、定義乙個有返回值的委託

class

program

//1、寫乙個方法add

public

static

int add(int n1,int

n2)

//2、寫個方法test,用來呼叫方法add();

//public static void test()

//public

static

void test(mydelegate mdl)//

將定義的委託名字 mydelegate 放在test()方法中,並宣告乙個引數

}

f11進行逐步 除錯!

案例1:在指定的位置記錄當前的時間,(1、輸出到控制台,2、寫入檔案)

class

program

public

static

void

say()

public

static

void

dosth()

public

static

void

show(mydelegate mdl)

}

案例2:單獨建立乙個類庫;有乙個方法changestring(string name,mydelegate)

傳入乙個字串陣列,在每個元素兩邊加上乙個「=」,

//當我想讓元素全部大寫,怎麼辦??(可以將委託作為引數)將使用者達**,「注入」到你的程式中。

class

program

;changestr sr = new

changestr();

sr.changestring(names, test);

//6、可以發現沒有返回值,所以再次遍歷,進行讀取

for (int i = 0; i < names.length; i++)

//7、

console.readkey();

}//2、做一件事情,對陣列中的每個名字,做一些加工,怎麼做

//就是 兩邊加上*****=的樣式

public

static

string test(string

name)

public

static

string do(string

name)

//3.需要遍歷陣列,接下來,寫個類changestr對陣列,進行遍歷字串陣列的方法}

//這個就是test()方法,封轉的乙個委託,,類似,對字段的封裝了

//參照test()的 返回值型別,和引數個數

//很明顯,這個就是有"返回值"的,並且是"帶引數"的 委託

public

delegate

string mydelegate(string name); //

5、public

class

changestr}}

}

總結委託如下:

宣告委託的方式:        delegate  返回值型別   委託型別名(引數)

比如:delegate void mydel(int n)

注意這裡的除了前面的delegate,剩下部分和宣告乙個函式一樣,但是mydel不是函式名,而是委託型別名 儲存什麼樣的方法就宣告什麼型別(方法引數與返回值)的委託。

宣告的委託是一種型別,就像int、person一樣,如果要用的話還要宣告委託型別的變數,宣告委託型別變數的方式:mydel f1;

將委託型別變數指向函式 mydel sp = new mydel (sayhello),這樣就可以像呼叫普通函式一樣把sp當成函式用了。

委託可以看做是函式的指標。

整數可以用整數變數指向它,物件可以用物件變數指向它,函式也可以用委託變數指向它。和直接呼叫函式的區別:用委託就可以指向任意的函式,哪怕是之前沒定義的都可以,而不使用受限於那幾種。

將委託型別變數指向函式還可以簡化成mydel sp = sayhello,編譯器幫我們進行了new。但是不能sp=printit(),因為這樣就成了函式呼叫。

什麼是委託

什麼是委託 首先要知道什麼是委託,用最通俗易懂的話來講,你就可以把委託看成是用來執行方法 函式 的乙個東西。如何使用委託 在使用委託的時候,你可以像對待乙個類一樣對待它。即先宣告,再例項化。只是有點不同,類在例項化之後叫物件或例項,但委託在例項化後仍叫委託。宣告,如 1 namespace vczx...

什麼是委託,理解委託

我自己的比較抽象粗淺的認識是 乙個類想執行乙個方法,但它本身沒有這個方法,這個方法在另乙個類中,於是它 委託 那個類來幫它執行 接觸c 是在兩年前了,今天才算對這個概念有個粗淺的認識,慚愧啊 mailmanager類想執行fax類的faxmsg方法,但是fax類不讓執行,所以mailmanager就...

什麼是委託?為什麼要使用委託?什麼是事件?

1 什麼是委託?首先宣告乙個委託 public delegate string islengthfive string s 下面寫幾個方法 public string dowork string a public string dosomework string b public string do...