C 委託使用

2021-08-22 13:26:13 字數 1214 閱讀 1434

委託是乙個類,它定義了方法的型別,說白了就是將乙個方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法。

可以避免在程式中大量使用

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...