委託是乙個類,它定義了方法的型別,說白了就是將乙個方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法。
可以避免在程式中大量使用
if-else(switch)
語句,同時使得程式具有更好的可擴充套件性。
它封裝了委託型別的變數,使得:在類的內部,不管你宣告它是public還是protected,它總是private的。在類的外部,註冊「+=」和登出「-=」的訪問限定符與你在宣告事件時使用的訪問符相同。
給委託增加或者減少方法使用-=和+=,使用委託可以將多個方法繫結到同乙個委託變數,當呼叫此變數時(這裡用「呼叫」這個詞,是因為此變數代表乙個方法),可以依次呼叫所有繫結的方法。
class program
public static void englishgreeting(string name)
public static void chinesegreeting(string name)
}
//定義委託,定義了可以代表的方法的型別
public delegate void greetingdelegate(string name);
public class greetingmanager
}}
makegreet事件確實是乙個greetingdelegate型別的委託,只不過不管是不是宣告為public,它總是被宣告為private。另外,它還有兩個方法,分別是add_makegreet和remove_makegreet,這兩個方法分別用於註冊委託型別的方法和取消註冊。實際上也就是: 「+= 」對應 add_makegreet,「-=」對應remove_makegreet。而這兩個方法的訪問限制取決於宣告事件時的訪問限制符。
在add_makegreet()方法內部,實際上呼叫了system.delegate的combine()靜態方法,這個方法用於將當前的變數新增到委託鍊錶中。我們前面提到過兩次,說委託實際上是乙個類,在我們定義委託的時候:
public delegate void greetingdelegate(string name);
當編譯器遇到這段**的時候,會生成下面這樣乙個完整的類:
public sealed class greetingdelegate:system.multicastdelegate
更多訪問 C 使用委託
文章整理自msdn 委託是一種引用方法的型別。一旦為委託分配了方法,委託將與該方法具有完全相同的行為。委託方法的呼叫可以像其他任何方法一樣,具有引數和返回值,如下面的示例所示 與委託的簽名 由返回型別和引數組成 匹配的任何可訪問類或結構中的任何方法都可以分配給該委託。方法可以是靜態方法,也可以是例項...
C 委託使用
c 委託使用案例 假定有兩個物件a和b,在a中例項化了物件b,那麼a可以訪問b中的方法,反過來b不能直接訪問a中的方法,所以使用委託。委託的使用步驟 條件 在a物件中例項化了b 1 在b中宣告乙個委託原型 2 在a中根據委託原型編寫所需要的委託方法 3 在b中利用宣告的委託原型宣告乙個委託變數 4 ...
c 中使用委託
對於委託的定義,我的理解就是封裝一型別的方法,然後根據傳遞進的引數,由系統來進行選擇呼叫。申明 delegate void voidoperation uint x 這申明了乙個委託,與這個委託匹配的方法格式為 不返回任何結果,引數。delegate int intoperation int x,i...