C 委託入門

2022-02-17 17:07:17 字數 1266 閱讀 3552

經典的關於委託的詳解  

這裡從網上找到的的例項,適合新手test下:

委託(delegate)是一種引用型別,我們在處理他的時候要當作類來看待而不是方法,說白了委託就是對方法或者方法列表的引用,呼叫乙個委託例項就好像是呼叫c++中的指標一樣,他封裝了對制定方法的引用,或者說委託起到的是橋梁的作用,例項後的委託物件會將給定的引數傳遞給他所**的方法,並去執行方法。

//宣告乙個委託

delegate int mydelegatehandler(int a, int b);

public class a

}//入口類

public class b

}

我們知道委託是對方法的封裝,而且委託可以封裝很多方法形成委託鏈,其實委託就好像是乙個容器,他封裝了我們想要實現的若干方法,當呼叫委託物件(相當於c++中的指標)時,就會順序的執行它所封裝的所有的方法,如果有返回值的話,往往返回的是最後乙個被執行的方法的返回值,委託鏈的形成可以用"+="或"-="對不同的委託例項進行二元操作。

//定義乙個委託

public delegate void printhandler(string message);

public class printprovider1

public class printprovider2

class delegate1

catch (nullreferenceexception ex)

console.writeline("試圖從null中移出委託是無效操作");

trycatch (nullreferenceexception ex)

}}

結果如下:

委託例項prn1的列印結果

委託鏈1111111

委託例項prn2的列印結果

委託鏈2222222

委託例項prn1+prn2的列印結果

委託鏈1111111

委託鏈2222222

委託例項prn1+prn2+prn3的列印結果

委託鏈1111111

委託鏈2222222

委託鏈3333333

委託例項prn1+prn3的列印結果

委託鏈1111111

委託鏈3333333

委託例項prn3的列印結果

委託鏈3333333

試圖呼叫null委託會引發異常

未將物件引用設定到物件的例項。

試圖從null中移出委託是無效操作

本文**自:

c 委託事件入門 第一講 委託入門

說起委託,有些剛剛入門c 的人感覺很高大上,沒有接觸過,但是其實很多人都用過lambda表示式,實際上lambda表示式就是乙個委託。關於委託入門有個大神寫的很詳細 張子陽的部落格 c 中的委託和事件 part.1 下面就按照思明的理解介紹一下委託入門 1 委託是什麼 委託是乙個類,它定義了方法的型...

委託入門案例

我本人對於委託最多的使用就是子執行緒呼叫主線程的控制項的使用。可能使用winform或者wpf的人接觸的多一點。這裡最主要還是給大家看看委託的案例吧 delegate void showmsg string msg showmsg s 第一種委託的方法 s func s aaa 第二種委託方法 s ...

C 中的委託入門到精通

委託和事件在 net framework 中的應用非常廣泛,然而,較好地理解委託和事件對很多接觸 c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡堵得慌,渾身不自在。本章中,我將由淺入深地講述什麼是委託 為什麼要使用委託 ...