舉個例子,某人有三子,讓他們各自帶一樣東西出門,並帶回一頭獵物。可以理解為一種父親對兒子的委託。
在學c時,一定會接觸到各種各樣的指標。正是指標的隨意使用,導致了現在溢位攻擊的氾濫。
那麼在c#裡面,針對這種現象進行了改進--委託。委託的作用類似於方法指標,它指向乙個方法,並且提供使用者程式使用。但是,這個方法指標是有限制的,必須規定好所指向方法的返回值,引數個數及各個引數的型別。因此,可以防範溢位攻擊。
簡而言之:所謂委託,是可以呼叫目標方法並且確定方法簽名的一種特殊的物件。
具體到c#語法,委託分為委託宣告和委託例項兩種。
委託宣告,用來宣告委託所指向的方法的簽名。它以delegate關鍵字開頭,一般寫在類的前面。例如,當我想要指向的方法為:
public string mergestring(string s1, string s2)
我們就可以宣告乙個有兩個string引數並且返回乙個string的委託:
delegate string testdelegate(string s1, string s2);
委託宣告並沒有指向任何方法,因此,它不可以直接被呼叫。但是,我們可以通過委託(宣告)來例項化物件,這樣的物件就被稱為委託例項。
委託例項的建立與用類例項化乙個物件類似,但有乙個約定,要把目標方法的方法名作為引數傳入,例如:
public方法print中:void print(string s1, string s2)
第一行,我們利用乙個委託宣告得到了乙個委託例項。
第二行,呼叫這個委託。
第三行,輸出結果。
小結一下,委託的實質是安全的方法指標;委託分為委託宣告和委託例項;使用委託時,先宣告,然後例項化,最後呼叫。
乙個很有趣的問題出現了:我們為什麼要用委託?
委託給我們帶來的最大好處時:其可以通過程式設計方法來動態的呼叫別的方法。這意味著什麼?這意味著,當我們把委託作為引數時,寫乙個**模板,就可以讓其以一定的方式執行不同的**。
c 的委託是什麼
之前囫圇吞棗的看了一遍c 的入門書,還是有很多不懂的地方,比如這個delegate委託,書裡面就完全沒有提到過。查中文資料又翻譯的讓人看不懂,還不如直接看英文了。這邊我試著翻譯一下,翻的不好請指出arul nayagam c 委託是c net裡面很玄的乙個東西,這篇文章裡面我試著解釋一下委託是啥,還...
c 委託到底是什麼,為麼需要委託
首先,我們來說說物件導向,所謂物件導向是對不同職階的地位物件的封裝,通俗的說就是專業的事情交給專業的人做 又比如在 fate 中具有七個職階,不同的職階都有其自己的專屬技能和所擅長的領域。然而,物件想學習新的技能就得繼承,繼承的弊端在於會使乙個類過於龐大而且有些方法,並不是我們現在的這個子類所需要的...
委託到底是什麼?
說到委託,大多數的程式設計人員可能都聽說過,甚至用過,可是能把委託說明白,別人也能聽明白的就不多了吧。這篇文章就由淺入深的介紹一下,委託到底是什麼。委託是物件導向的標誌,物件導向 於現實世界,當然委託在現實世界中也是有原型的,比如 小明,幫我買包菸 這就是現實中的委託 我 委託小明 買飯 物件導向是...