C 中的委託

2021-04-25 01:45:55 字數 1272 閱讀 3800

委託是個比較讓人費解的東西,最近把這個東西翻來覆去看了幾遍了,有了些想法,希望能對同樣卡在這裡的同志一些啟發。

在這裡主要提供一種理解思路,畢竟像基本語法、規範之類的,查參考書是最好的了。

首先來看看乙個宣告乙個物件的過程:

class someclass //定義乙個類

someclass  sample;  //宣告乙個物件

sample  = new someclass();  //例項化,如果有引數,就傳引數進去

..... //使用這個例項

然後我們再來看委託:

delegate string getastring(); //定義乙個委託,注意這裡是以「;」結尾,而不是用的「{}」

getastringsample2;  //宣告乙個委託

sample2 = new getastring(object.tostring); //例項化,必須傳遞乙個引數,注意,這裡的tostring少了「()」

....... //使用這個委託

注意看上面兩個例子,他們很相似。那我們來看看sample和sample2有社麼不同呢。

我們把變數想象成乙個盒子,那麼sample裡面裝的就是someclass的乙個例項(雖然sample和sample2是個引用變數,不過這裡不妨礙我們這樣來理解它),而sample2裡面裝的卻是乙個方法,對,想象一下把乙個方法(函式)當成乙個東西裝起來。看吧,其實他就是乙個變數,不過代表的不是乙個資料(或資料和方法的集合:類),而是代表乙個的方法。

好,理解了他原來就是乙個變數,然後要注意的是,它使用上稍微有些不同。對於乙個例項,我們無非就是訪問他的成員,呼叫它的方法,這個不多說,那委託呢?我們想象一下,他只是裝的乙個方法(函式),那就只能直接使用了,見如下**:

console.writeline(sample2());  //效果等同於 console.writeline(object.tostring());

所以,這裡sample2就代表(被委託)了object.tostring,就像是object.tostring被**執行了。

哦,我們就明白了,原來這就是委託。

別走開,緊接著要看下面的例子,看看委託能用來做什麼:

(例子**於c#高階程式設計)

這個例子中,我們要呼叫返回值和引數都相同的兩個函式,使用委託,我們呼叫起來就顯得很方便。當然這裡只是一種使用方式。

最後,理解了委託是什麼,可以怎麼用,然後再去找點資料去看看委託的基本語法,規範等等,然後再多練兩下,就差不多了。

推薦c#高階程式設計,我看的是第二版,感覺收穫挺大。

C 中的委託

c 中的委託 引言 c 中的委託著實讓我迷惑 我是位初學者 在不同的c 書籍中,還譯為 委派等,經反覆查閱資料和自己動手編寫 才稍稍理出點頭緒。c 中的委託類似於c或c 中的函式指標,但兩者有本質區別 c或c 不是型別安全的,但c 中的委託是物件導向的,而且是型別安全的。從技術角度來講,委託是乙個引...

C 中的委託

1.委託概述 委託是c 中新加入的乙個型別,可以把它想作乙個和class類似的一種型別,和使用類相似,使用乙個委託時,需要兩個步驟,首先你要定義乙個委託,就像是定義乙個類一樣 然後,你可以建立乙個或多個該委託的例項。定義乙個委託的語法是這樣的 public protected private del...

C 中的委託

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