一、委託
當我們需要把方法做為引數傳遞給其他方法的時候,就需要使用委託。
因為有時候,我們要操作的物件,不是針對資料進行的,而是針對某個方法進行的操作。
我們還是來以**入手:
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 用完...