C 學習筆記 delegate 委託

2021-03-31 08:56:31 字數 1110 閱讀 5132

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關鍵字。委託的宣告指定了乙個函式簽名...