之前有學過,但也是一知半解,現在有空重新去查詢一些資料學習了一下,雖然也是從別人那兒學來的,但是也正努力的根據自己的理解去寫例子。
1.通過例項了解委託的概念
什麼是委託?:委託是一種型別,屬於引用型別,委託的關鍵字:delegate。委託與類的定義是一樣的,能定義類的地方也能定義委託。
如何建立乙個無參和有參的委託?
案例1:委託的基本組成
classview codeprogram
public
static
void
mymethod()
public
static
void mymethod(string
name)
}
2.委託**靜態方法和例項方法
**函式怎麼理解?或者說**函式為什麼被成為**函式?
比如呼叫了乙個函式,那麼就叫做呼叫,但是如果在呼叫乙個函式a的時候還需要把這個函式a提交給該函式b,讓函式b呼叫函式a,那麼提供的函式a就成為**函式 (callback)
理解上述描述之後再來理解「委託**」也就不難理解了。
案例2:委託**
classview codeprogram
}public
class
studydelegate
}public
class
studydelegateinstance
}
3.委託的合併與刪除
學習這個是為了學習【委託鏈】,這個會在後文進行補充和學習
案例3:委託的合併和刪除
classview codeprogram
}public
class
studydelegate
}public
class
studydelegateinstance
}
remove(source,value)新的委託,其呼叫列表的構成採用的呼叫列表 source 和刪除的呼叫列表的最後乙個匹配項 value, ,如果的呼叫列表 value 的呼叫列表中找到 source。 返回 source 如果 value 是 null 或者,如果的呼叫列表 value 的呼叫列表中找不到 source。 如果返回 null 引用的呼叫列表 value 的呼叫列表等於 source 或者,如果 source 為空引用。4.泛型委託
引用泛型委託的**可以指定型別引數以建立已關閉的構造型別,就像例項化泛型類或呼叫泛型方法一樣其實在c#2.0版之後提供了兩種泛型委託:action和func.public delegate void del(t item);
public static void notify(int i)
delm1 = new del(notify);
action:.net freamwork提供了17個action委託,從無引數到16個引數,如果超過16個就需要自己定義了,同時action並不帶有返回值。
案例4:
classview codeprogram
public
static
void student(string name,int age,string
address)
}
func:一樣提供了從無參到16個引數外加乙個返回值。
案例5:
staticview codevoid main(string
args)
public
static
string student(string name,int age,string
address)
參考**:
一起學習C 委託
現實生活中,我們有時候有事很忙,沒辦法自己直接去做,只能委託別人間接去做。比如,我今天生病了,請別人幫我帶飯。在c 中,委託也是同樣道理,不直接呼叫函式,通過委託機制間接呼叫函式。我們來想象下面場景,開學了,我們遇到了一位漂亮的女生,從我第一眼看上去,我就深深的愛上了她,這就是所謂的一見鐘情。可是這...
學習委託筆記
最近一直在想如何解釋委託,比如乙個婚姻律師事務所,他處理婚姻相關的案子,這些案子的共同點都屬於婚姻調解類別,不同點就是各個案子的當事人不一樣,案子處理的方式不一樣.這和委託有什麼關係呢,這個例子裡面,我們可以把婚姻律師事務所當作乙個委託,而針對每個不同當事人處理方式不一樣,我們可以理解為具體實現的不...
委託學習筆記
1 申明委託 delegate void mydel int x 2 建立委託物件 1 使用new運算子的物件建立表示式 mydel delvar delvar new mydel myinstobject.mym1 使用例項方法 dvar new mydel sclass.mym1 使用靜太方法 ...