委託學習(一)

2022-06-10 16:09:09 字數 2047 閱讀 5406

之前有學過,但也是一知半解,現在有空重新去查詢一些資料學習了一下,雖然也是從別人那兒學來的,但是也正努力的根據自己的理解去寫例子。

1.通過例項了解委託的概念

什麼是委託?:委託是一種型別,屬於引用型別,委託的關鍵字:delegate。委託與類的定義是一樣的,能定義類的地方也能定義委託。

如何建立乙個無參和有參的委託?

案例1:委託的基本組成

class

program

public

static

void

mymethod()

public

static

void mymethod(string

name)

}

view code

2.委託**靜態方法和例項方法

**函式怎麼理解?或者說**函式為什麼被成為**函式?

比如呼叫了乙個函式,那麼就叫做呼叫,但是如果在呼叫乙個函式a的時候還需要把這個函式a提交給該函式b,讓函式b呼叫函式a,那麼提供的函式a就成為**函式  (callback)

理解上述描述之後再來理解「委託**」也就不難理解了。

案例2:委託**

class

program

}public

class

studydelegate

}public

class

studydelegateinstance

}

view code

3.委託的合併與刪除

學習這個是為了學習【委託鏈】,這個會在後文進行補充和學習 

案例3:委託的合併和刪除

class

program

}public

class

studydelegate

}public

class

studydelegateinstance

}

view code

remove(source,value)新的委託,其呼叫列表的構成採用的呼叫列表 source 和刪除的呼叫列表的最後乙個匹配項 value, ,如果的呼叫列表 value 的呼叫列表中找到 source。 返回 source 如果 value 是 null 或者,如果的呼叫列表 value 的呼叫列表中找不到 source。 如果返回 null 引用的呼叫列表 value 的呼叫列表等於 source 或者,如果 source 為空引用。
4.泛型委託

引用泛型委託的**可以指定型別引數以建立已關閉的構造型別,就像例項化泛型類或呼叫泛型方法一樣

public delegate void del(t item);

public static void notify(int i)

delm1 = new del(notify);

其實在c#2.0版之後提供了兩種泛型委託:action和func.

action:.net freamwork提供了17個action委託,從無引數到16個引數,如果超過16個就需要自己定義了,同時action並不帶有返回值。

案例4:

class

program

public

static

void student(string name,int age,string

address)

}

view code

func:一樣提供了從無參到16個引數外加乙個返回值。

案例5:

static

void main(string

args)

public

static

string student(string name,int age,string

address)

view code

參考**:  

一起學習C 委託

現實生活中,我們有時候有事很忙,沒辦法自己直接去做,只能委託別人間接去做。比如,我今天生病了,請別人幫我帶飯。在c 中,委託也是同樣道理,不直接呼叫函式,通過委託機制間接呼叫函式。我們來想象下面場景,開學了,我們遇到了一位漂亮的女生,從我第一眼看上去,我就深深的愛上了她,這就是所謂的一見鐘情。可是這...

學習委託筆記

最近一直在想如何解釋委託,比如乙個婚姻律師事務所,他處理婚姻相關的案子,這些案子的共同點都屬於婚姻調解類別,不同點就是各個案子的當事人不一樣,案子處理的方式不一樣.這和委託有什麼關係呢,這個例子裡面,我們可以把婚姻律師事務所當作乙個委託,而針對每個不同當事人處理方式不一樣,我們可以理解為具體實現的不...

委託學習筆記

1 申明委託 delegate void mydel int x 2 建立委託物件 1 使用new運算子的物件建立表示式 mydel delvar delvar new mydel myinstobject.mym1 使用例項方法 dvar new mydel sclass.mym1 使用靜太方法 ...