c 的委託是什麼

2022-06-21 11:00:09 字數 1878 閱讀 8613

之前囫圇吞棗的看了一遍c#的入門書,還是有很多不懂的地方,比如這個delegate委託,書裡面就完全沒有提到過。查中文資料又翻譯的讓人看不懂,還不如直接看英文了。這邊我試著翻譯一下,翻的不好請指出
arul nayagam c

委託是c#.net裡面很玄的乙個東西,這篇文章裡面我試著解釋一下委託是啥,還有多重委託是啥,以及在c#裡面的簡單應用。

委託是一種型別,不過它指向的不是數字啊,字串啊之類的,它指向的物件方法引用(我好暈),而且他還是可以保證這種引用不會出現型別錯誤。(這是不是也算靜態檢查的一種?)

public

delegate type_of_delegate delegate_name()

舉個栗子:

public

delegate

int mydelegate(int delvar1,int delvar2)

注意:例程

public

delegate

double delegate_prod(int a,int b);class

class1

static

void main(string

args)

}

解釋一下:

我們這個程式主要是講解一下委託怎麼用

delegate_prod這個委託具有double型別,接受的引數也是兩個double型別

而在類裡面,fn_prodvalues這個方法也是返回double,接受兩個double引數,看到了吧,一樣的吧?

在main方法裡面,我們給delegate_prod建立了乙個例項,然後把fn_prodvalues這個方法的名稱交給delegate的例項了

delegate_prod delobj = new delegate_prod(fn_prodvalues);

接下來,我們就不會讓fn_prodvalues直接與外界接觸啦,如果要接觸,引數要經過delegate傳輸,就像這樣:

delobj(v1,v2);

然後方法返回的結果也是經由delobj這個委託的例項傳輸回來。

什麼是多重委託呢?其實就是乙個委託同時接了幾個活,引用了乙個以上的方法。

鑑於它這麼猛,沒有方法會認真對待他,所以不會有結果傳回:多重委託的引用物件還有它自己都必須是void型別的

再舉乙個簡單的例子:

delegate

void delegate_multicast(int x, int

y);class class2

static

void method2(int x, int

y)public

static

void"on

" />main()

}

解釋:上面的程式裡面,兩個方法,method1和method2都是接受兩個int引數,void無返回。

然後main方法裡面,這個多重委託就這麼宣告好了,順便還送了乙個方法進去:

delegate_multicast func = new delegate_multicast(method1);

然後我們又用+=再送了乙個方法給他

後面我們又用-=從他那裡拿走了乙個方法

這篇文章簡單的講解了一下委託的概念,舉了幾個簡單的小程式作為例子。如果你對於這篇文章有什麼問題,聯絡原作者in english,[email protected].

C 的委託是什麼?

舉個例子,某人有三子,讓他們各自帶一樣東西出門,並帶回一頭獵物。可以理解為一種父親對兒子的委託。在學c時,一定會接觸到各種各樣的指標。正是指標的隨意使用,導致了現在溢位攻擊的氾濫。那麼在c 裡面,針對這種現象進行了改進 委託。委託的作用類似於方法指標,它指向乙個方法,並且提供使用者程式使用。但是,這...

c 委託到底是什麼,為麼需要委託

首先,我們來說說物件導向,所謂物件導向是對不同職階的地位物件的封裝,通俗的說就是專業的事情交給專業的人做 又比如在 fate 中具有七個職階,不同的職階都有其自己的專屬技能和所擅長的領域。然而,物件想學習新的技能就得繼承,繼承的弊端在於會使乙個類過於龐大而且有些方法,並不是我們現在的這個子類所需要的...

委託到底是什麼?

說到委託,大多數的程式設計人員可能都聽說過,甚至用過,可是能把委託說明白,別人也能聽明白的就不多了吧。這篇文章就由淺入深的介紹一下,委託到底是什麼。委託是物件導向的標誌,物件導向 於現實世界,當然委託在現實世界中也是有原型的,比如 小明,幫我買包菸 這就是現實中的委託 我 委託小明 買飯 物件導向是...