什麼是委託(Delegate)

2021-05-26 14:48:25 字數 1349 閱讀 8498

委託可以這麼來理解,委託就像是定義乙個指標(c++),提供入口。

1 例項1:執行乙個委託定義的方法

第一步:定義乙個委託

public delegate void  computer();  //委託用delegate定義,此方法是void型別,並且沒有任何引數

第二步:定義乙個和委託型別相同的方法,計算兩數之和

private void mathopt()

第三步:在乙個按鈕的click事件中

private void button1_click(object sender, eventargs e)

好了,這樣就執行了乙個委託的方法,當系統執行到com()的時候,就相當於執行方法mathopt(),如果有引數,那麼在定義委託的時候和方法有相同的引數即可。

有了委託就可以定義事件了

例項2:定義乙個事件

功能:在父子窗體間通訊,如在子窗體輸入條件,在父窗體中查詢,類似office的查詢

定義窗體:假設父窗體為frm1,子窗體為frm2

第一步在frm2中定義事件:

public delegate void fullsearch(string key); //定義全文檢索的委託事件

public event fullsearch fullsearchorder;  //用委託定義乙個檢索的事件(會在父窗體中執行功能)

第二步在frm2的「查詢」按鈕事件中執行:

private void btnsearch_click(object sender, system.eventargs e)

第三步轉到frm1中處理事件

3-1   在父窗體中的彈出子窗體時產生定義的那個事件方法:如

frm2 frm2=new frm2(key);  //key為要查詢的關健字,與定義事件方法引數保持一至

frm2.fullsearchorder +=new .frm2.fullsearch(frm2_fullsearchorder);  //執行這句會自動產生乙個事件frm1_fullsearchoreder

frm2.showdialog ();

3-2 在系統產生的事件中完成查詢功能就ok了

private void frm2_fullsearchorder(string key)

到這裡就好了,不同窗體間就可以通訊了,在彈出的子窗體中就可以執行父窗體中的方法了,原理都是利用委託。

看到高人這樣解釋:

你去看電影,電影院賣給你兩張票,不過在賣的時候他肯定不知道這個位置是你座還是你朋友座,是男的座還是女的座.只有等電影開場了,大家都做上去了一切就清楚.

你可以將委託理解為乙個佔位符,就是先站乙個位置.具體是什麼東西等用的時候在指定.

初始delegate委託

剛剛接觸c 不足三個月,最近網上查了一下c 的delegate委託。發現delegate更類似於之前學習c語言時候的指標,可以呼叫其它方法。使用委託可以將方法作為引數來賦值和傳遞。1 定義委託 2public delegate void mytestdelegate int i 3 class pr...

什麼是委託?

思考 static關鍵字是什麼?加上這個關鍵字,這個方法只能,在本類中使用!簡記 想做什麼事情,但是又不確定,就用委託佔位 然後將方法作為傳遞!1 什麼是委託?委託就是把 方法 作為引數進行傳遞!委託是一種 資料型別 像類一樣 可以宣告委託型別變數 2 定義的方法沒有返回值,那麼定義的委託也沒有返回...

什麼是委託

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