c 學習筆記 六 委託

2021-04-12 20:47:13 字數 1683 閱讀 1912

委託是一種引用方法的型別.一旦為委託分配了方法,該委託與方法具有相同的型別,委託象其他方法一樣具有返回值和引數.如 public delegate int mydelegate(int x ,int y)  與該委託簽名相匹配的方法可以分配給該委託.

delegate關鍵字用於宣告乙個引用型別,通常委託用於封裝命名方法或匿名方法,委託類似與c,c++中的函式指標,但是是型別安全的,可靠的.(可以用委託給物件封裝原來類中沒有的方法)

命名方法:

// declare a delegate:
delegate void del(int x);
// define a named method:
void dowork(int k)
// instantiate the delegate using the method as a parameter:
del d = obj.dowork;這被稱為使用命名的方法,使用命名方法構造的委託可以封裝
靜態方法和例項方法.
示例:
// declare a delegatedelegate void del();class sampleclass
//靜態方法
static public void staticmethod()
}
class testsampleclass
}
委託型別派生自.net framework中的delegate類,是密封的,不能被繼承.也不能從中派生自定義類.
例項化委託是物件,所以可以作為引數傳遞,並且可以賦值給屬性.方法可以接受作為引數的委託,
並且以後可以呼叫該委託,這叫非同步**.在較長的程序後用來通知呼叫方的常用方法.
自己測試的例子:
public delegate void del( int message );

class myclass

public static void delmethod(int i,int j,del callback)

public void mymethod(int m)

}

附:匿名方法(.net2.0引入),將**塊傳遞給委託,必須使用匿名委託,顧名思義,不用單獨建立方法.方法體直接封裝在委託內,不建立單獨的方法,這樣,例項化委託時減少了系統的編碼開銷.格式 del d = delegate ( 引數型別 )

//方法體

};//注意這個分號.(這是初始化委託並不執行)

delegate void printer(string s);

class testclass

;p("the delegate using the anonymous method is called.");

p = new printer(testclass.dowork);//委託的建構函式,還可以這樣寫 p = testclass.dowork;

p("the delegate using the named method is called.");

}// 命名委託

static void dowork(string k)

}

C 「委託」學習筆記

using system using system.collections.generic using system.linq using system.text namespace delegatetest console.writeline sh3 jiang 組合委託,此時委託就能夠依次執行多...

C 學習筆記 委託

什麼是委託?委託 delegate 是一種可以把引用儲存為函式的型別。委託的宣告非常類似於函式,但不帶函式體 且要使用 delegate關鍵字。委託的宣告指定了乙個型別和引數列表。在定義了乙個委託後就可以宣告該委託型別的變數。接著把這個變數初始化為與委託有相同返回型別和引數列表的函式引用。之後,就可...

C 委託學習筆記

namespace delegate private static void chinesegreeting string name 注意此方法,它接受乙個greetingdelegate型別的方法作為引數 private static void greetpeople string name,gr...