-
delegate
(.NET)
鎖定
委託(delegate)是一種類型安全的函數指針,用於通用語言運行庫(CLI)。在C#中,delegate是一種class,包裝了一個或多個函數指針及綁定的類實例。Delegate用來實現函數回調與事件接收(event listener)。Delegate對象可以作為參數傳遞給其他函數,以引用(referenced)封裝在delegate對象中的函數,而無需在編譯時刻就綁定被調用函數。
一旦為委託分配了函數方法,委託將與該函數方法具有完全相同的行為。與委託的類型特徵(由返回類型和參數組成)匹配的任何方法都可以分配給該委託。
delegate技術實現細節
“委託”作為類,繼承自System.MulticastDelegate(抽象類)。可以認為包含:一個類對象實例的地址(Target屬性),該類的一個方法的地址(Method屬性),以及另一個“委託”實例的引用(reference)。因此引用一個“委託”對象,可能實際上引用了多個“委託”的實例。“委託”對象被調用時,依次調用裏面的多個“委託”的實例。這對於事件驅動的程序比較有用。
如果“委託”封裝了一個靜態函數,則其內部的綁定的類對象地址為null。
delegate類型特徵
型籤(英語:type signature)或型標(type annotation)是計算機科學中對程序的函數、方法、子過程、以及變量等給出其類型。特別是對函數給出其輸入參數數量、類型與次序及輸出結果的類型。許多編譯器產生的內部使用的函數名包含了其類型特徵,這稱為名字修飾,給鏈接器辨別不同的函數提供了方便。
類型特徵的現代應用:
- 面嚮對象語言使用的interface,實際上是利用了函數類型特徵的模板。
delegate函數指針
函數指針是一種在C、C++、D語言、其他類C語言和Fortran2003中的指針。函數指針可以像一般函數一樣,用於調用函數、傳遞參數。在如C這樣的語言中,通過提供一個簡單的選取、執行函數的方法,函數指針可以簡化代碼。
delegate通用語言運行庫
通用語言運行平台(Common Language Runtime,簡稱CLR)是微軟為他們的.NET的虛擬機所選用的名稱。它是微軟對通用語言架構(CLI)的實現版本,它定義了一個代碼運行的環境。CLR運行一種稱為通用中間語言的字節碼,這個是微軟的通用中間語言實現版本。
CLR運行在微軟的視窗操作系統上。查看通用語言架構可以找到該規格的實現版本列表。其中有一些版本是運行在非Windows的操作系統中。
[2]
- 參考資料
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:14次歷史版本
- 最近更新: panhao8681