C 基礎 委託

2021-06-19 12:07:41 字數 2132 閱讀 8003

一、委託

當我們需要把方法做為引數傳遞給其他方法的時候,就需要使用委託。

因為有時候,我們要操作的物件,不是針對資料進行的,而是針對某個方法進行的操作。

我們還是來以**入手:

using system;

using system.collections.generic;

using system.linq;

using system.text;

}}

在上例中,public delegate string getastring(); 就是宣告了乙個委託(delegate),其語法和方法的定義類似,只是沒有方法體,前面要加上關鍵字 delegate 。定義乙個委託,基本上是定義乙個新類, 所以,可以在任何定義類的地方,定義委託。

注意,在c#中,委託總是自帶乙個有引數的建構函式,這就是為什麼在上例中,getastring firststring=new getastring(x.tostring); 通過這句初始化乙個新的delegate 的時候,給傳遞了乙個 x.tostring 方法。但,在定義delegate 的時候,卻沒有定義引數。

在看另乙個例子之前,我們先來了解下匿名方法。

匿名方法的使用,我們看個例子:

using system;

using system.collections.generic;

using system.linq;

using system.text;

; console.writeline(url(domain));

console.readkey();}}

}

在本例中,geturl url=delegate(string param) 在這裡例項化乙個delegate 的時候,採用了匿

名的 方法。本例輸出的結果是

接下來我們再看乙個委託的例子:

using system;

using system.collections.generic;

using system.linq;

using system.text;

public static double numtwo(double x)

}public class delegatetest

,result of doubleopration is ;", x, result);

}static void main(string args)}}

}

首先我們定義了乙個numberopthion 類。用來對數字進行*2 和2 次方運算。接著,我們定義了乙個委託 delegate double doubleopration(double x)。下面,我們定義了printnumber(doubleopration dp,double x) 這樣乙個方法,其中乙個引數就是委託。最後我們doubleopration doption =new doubleopration(numberopthion.numone);例項化了乙個委託,並呼叫了 printnumber 方法。最後的輸出 結果是:

value is 0.5,result of doubleopration is 3;

value is 3.2,result of doubleopration is 10.24;

在上例中,我們如果採用匿名方法,**就會如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

,result of doubleopration is :", x, result);

}static void main(string args)

;doubleopration doptiontwo = delegate(double x)

;printnumber(doptionone, 1.5);

printnumber(doptiontwo, 3.2);

console.readkey();}}

}

委託,還有一種情況,是多播委託。這個在以後我們應用到的時候,會學習到。

C 委託基礎1 委託基礎

委託和其委託的方法必須具有相同的簽名。簽名相同 1.引數型別相同 2.引數數量相同 3.返回值一致 例一 class program static void main string args mm 7,6 console.readline 例二 class program double subtra...

c 委託基礎

委託 1.概念 委託是函式的封裝,它代表一 類 函式。它們都符合一定的簽名 擁有相同的引數列表 返回值型別。同時,委託也可以看成是對 函式的抽象,是函式的 類 2.語法 delegate argument list 3.用法 1.宣告委託,比如 public delegate void del st...

c 基礎 委託

委託是包含有相同簽名和返回值型別的有序方法列表 委託儲存的方法可以來自任何類或結構,需要同時匹配返回值和簽名 簽名包含 ref和 out delegate void mydel int x 建立委託物件 mydel delvar 建立乙個委託 delvar new mydel class.m1 用完...