動態的委託方法

2021-09-05 19:28:16 字數 665 閱讀 9844

委託是c#中實現事件的基礎,有時候不可避免的要動態的建立委託,實際上委託也是一種型別:system.delegate,所有的委託都是從這個類派生的

system.delegate提供了一些靜態方法來動態建立乙個委託,比如乙個委託:

namespace testspace

public void getvalue(string value) }}

使用示例:

testclass obj = new testclass();

//獲取型別,實際上這裡也可以直接用typeof來獲取型別

type t = type.gettype(「testspace.testclass」);

//建立**,傳入型別、建立**的物件以及方法名稱

testdelegate method = (testdelegate)delegate.createdelegate(typeof(delegate),obj,」getvalue」);

string returnvalue = method(「hello」);

如果想委託頁面方法:

protected void page_load(object sender, eventargs e)

public void hello(object sender, eventargs e)

委託和方法

1 委託的作用 使用委託將方法本身作為引數進行傳遞。2 委託的定義 委託是一特殊的引用型別,它將方法也作為特殊的物件封裝起來,從而使得方法作為變數或者引數進行傳遞。3 使用方法 delegate 返回值型別 names weituo 參數列 這裡的返回值型別是其引用的函式的返回值型別,參數列是引用函...

C 委託方法

什麼是委託 可以認為委託是持有乙個或多個方法的物件。下面我們講提供建立和使用委託的語法和語義。在後面你將看到如何使用委託將可執行的 從乙個方法傳遞到另乙個,以及為什麼這樣做是非常有用的。我們將從下面的示例 開始。如果此時你有些東西弄不明白,不必擔心,我會在本章剩餘內容中介紹委託的細節。開始部分宣告了...

帶有命名方法的委託與帶有匿名方法的委託

在 2.0 之前的 c 版本中,宣告委託的唯一方法是使用命名方法。c 2.0 引入了匿名方法,而在 c 3.0 及更高版本中,lambda 表示式取代了匿名方法,作為編寫內聯 的首選方式。不過,本主題中有關匿名方法的資訊同樣也適用於 lambda 表示式。有一種情況下,匿名方法提供了 lambda ...