delegate:簡單的可以理解為動詞名詞化。
委託是乙個函式的引用,擁有和函式相同的返回值型別,
而委託實際上是乙個類,他能夠持有對某種方法的引用,該類擁有乙個簽名,只能應用與其簽名相匹配的方法。
正因為乙個委託是乙個例項化的類(乙個物件),所以委託是受控制和安全的。
實現乙個委託:
1:宣告delegate物件,與想傳遞給他的方法具有相同的返回值型別
2:建立delegate物件,將想要引用的函式做為引數傳入
3:在實現非同步呼叫的地方,通過建立的委託物件(乙個委託類的例項)來呼叫方法
應用當 win32 函式需要返回多項資料時,通常都是通過**機制來實現的。開發人員將函式指標傳遞給函式,然後針對每一項呼叫開發人員的函式。
在 c# 中沒有函式指標,而是使用「委託」,在呼叫 win32 函式時使用委託來代替函式指標。
委託呼叫:
方法一:建立委託物件後,將委託物件傳遞給呼叫委託的其他**(如乙個方法)。通過委託物件的名稱(後面跟著要傳遞給委託的引數)呼叫委託物件
eg://宣告乙個委託:
public class delegateclass
private void fb(string s)
private void fc(string s)
public void dodelegatea(delegatea da,string info)
}呼叫:
例項化類:
delegateclass dc = new delegateclass();
dc.dodelegatea(new delegatea(fa),「haha
「);//將fa的引用傳遞給乙個delegatea委託例項
dc.dodelegatea(new delegatea(fb),「hoho「);
輸出訊息框顯示分別為:
hi haha
88 hoho
方法二:例項化委託物件,直接傳遞引數給委託物件呼叫
還是比如上面的類中
delegatea delegatea = new delegatea(fc);
delegatea(「heihei「);
補充中...
筆記 C 委託 delegate
網上查了很多資料,發現講委託的思路很亂!於是來整理一下。1 比喻 我把委託看成是手槍上的彈匣,而需要委託的函式則是彈匣中的子彈。要打幾槍就在委託裡裝幾發子彈,然後帶上這把槍 而不是去為每把槍裝上一發子彈,然後背一大堆槍 這裡的槍就是主函式gun 子彈可能是fire ice gold 屬性 彈匣就是委...
C 學習筆記之 委託 delegate
菜鳥教程 委託 當遇到在執行時才能決定用哪種方法的時候,使用委託。可以把delegate看做乙個包含有序方法列表的物件,這些方法具有相同的簽名和返回型別。定義乙個委託 訪問修飾符 delegate 返回型別 委託名 引數列表 訪問修飾符不是必須的 public delegate int mydele...
學習筆記 C 中的委託(delegate)
delegate 一 什麼是委託?委託是一種引用型別,它是函式指標的託管版本。在c 中,委託是一種可以把引用儲存為函式的型別。委託可以引用例項和靜態方法,而函式指標只能引用靜態方法。委託的宣告非常類似於函式,和函式不同的的是委託不帶函式體,並且需要delegate關鍵字。委託的宣告指定了乙個函式簽名...