最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C#知識梳理——委托

2023-08-22 17:46 作者:羞澀男孩小小明  | 我要投稿

什么是委托

委托是一個類型,一個引用類型,用來保存方法的指針(指向一個方法)!如果借用C/C++的概念來理解,那么,委托就是函數(shù)指針!

當我們調(diào)用委托的時候,這個方法就立即被執(zhí)行。

關(guān)鍵字就是delegate 定義的時候要傳和前面一樣的方法

但是為什么不直接用Hello呢?不是可以一樣得到這樣的結(jié)果嗎?

在C#中,委托(Delegate)是一種引用類型,它可以封裝一個或多個方法,并允許以相同的簽名調(diào)用這些方法。使用委托可以提供以下幾個好處:

  1. 封裝方法:委托允許你將一個或多個方法封裝到一個對象中,并將其作為參數(shù)傳遞給其他方法或存儲在變量中。這樣可以更方便地操作和傳遞方法,使代碼更加模塊化和可重用。

  2. 回調(diào)機制:委托可以用作回調(diào)機制的基礎(chǔ)。當某個事件發(fā)生時,可以調(diào)用委托來觸發(fā)注冊的方法,從而實現(xiàn)事件的異步處理。

  3. 簡化多線程編程:在多線程編程中,委托可以用來實現(xiàn)線程間的通信和同步。通過將方法封裝到委托中,并在不同的線程中調(diào)用委托,可以方便地實現(xiàn)線程的啟動、暫停、恢復等操作。

  4. 擴展方法的功能:委托可以用來擴展方法的功能,使其具有更高的靈活性。通過傳遞不同的委托實例,可以在不修改原有代碼的情況下改變方法的行為。

總的來說,使用委托可以提高代碼的靈活性、可重用性和可維護性。它可以幫助你更好地管理方法并實現(xiàn)各種編程模式,例如事件驅(qū)動、回調(diào)和多線程編程。

但是這幾句話,好像并不能為什么要有委托這個題目的答案,因為這些好像都不是它存在的必要的條件。

所以,為什么要有委托

既然這么簡單,為什么還要委托來做?

但是,如果方法發(fā)生了變動,該怎么辦?

利用委托將方法中判斷的部分摘出來,寫成一個新的方法,與委托關(guān)聯(lián),那么可以在不動主體代碼的條件下,去改動判斷條件。

梳理一下

那么,可以得出一個問題,委托可以解放冗長的代碼,把一個方法可以實現(xiàn)的功能模塊化。實現(xiàn)代碼的高靈活性。

委托與冒泡排序

第二種方法

委托的方法

到時候,想升序或者降序,只要換一下方法就可以了。

泛型委托

??目的是定義一個委托出來,在很多類型的情況下都可以使用。

其實官方已經(jīng)定義好了,即Action(不帶返回值) 、Func(帶返回值)

多播委托

多播委托(Multicast Delegate)是一種特殊類型的委托,它可以同時持有并調(diào)用多個方法。在.NET框架中,多播委托是通過將多個委托實例合并成一個委托實例來實現(xiàn)的。

多播委托的定義如下:

delegate void MyDelegate();

MyDelegate multicastDelegate = method1;

multicastDelegate += method2;

multicastDelegate += method3;

上述代碼中,multicastDelegate是一個多播委托,它同時持有method1、method2和method3三個方法。

多播委托的主要用途是在事件處理中,同時調(diào)用多個事件處理方法。當事件觸發(fā)時,所有注冊到多播委托的方法都會被依次調(diào)用。

多播委托有以下特點:

  1. 多播委托可以持有多個方法,并按照添加的順序依次調(diào)用這些方法。

  2. 多播委托可以使用+=運算符添加方法,使用-=運算符移除方法。

  3. 多播委托的調(diào)用順序是確定的,即使其中的某個方法拋出異常,其他方法仍然會被繼續(xù)調(diào)用。

  4. 多播委托可以使用GetInvocationList()方法獲取委托中包含的所有方法。

需要注意的是,多播委托只能用于返回類型為void的方法。如果委托的方法有返回值,則只能調(diào)用最后一個方法的返回值。

事實上,每一個委托都是繼承自多播類!

匿名表達

發(fā)現(xiàn)只返回一個

說明帶返回值的多播委托只返回最后一個方法的值

委托事件

事件就像是另一種加了限制的委托。

什么是事件:委托的安全版本 1、定義在事件類的外部,不能使用=操作,只能用+=,2、在定義事件類的外部,不能調(diào)用事件。另外事件就是在委托的前面加一個event關(guān)鍵字。

Winform里的事件

自定義標準事件

流程:1、定義一個委托——>2、定義一個調(diào)用和定義事件的類(發(fā)布者、安全性)——>3、訂閱事件(+=)——>4、類、方法(訂閱者)


C#知識梳理——委托的評論 (共 條)

分享到微博請遵守國家法律
内江市| 华池县| 东海县| 大名县| 涿州市| 卓资县| 广宗县| 方城县| 东阳市| 乌什县| 马关县| 辰溪县| 莱州市| 武强县| 木里| 丹江口市| 菏泽市| 柘荣县| 屯留县| 九龙坡区| 三明市| 岳普湖县| 宣城市| 称多县| 德兴市| 乌兰县| 福建省| 色达县| 宿迁市| 华亭县| 延寿县| 北海市| 阜平县| 资兴市| 轮台县| 兰西县| 宁波市| 天门市| 八宿县| 肃北| 磴口县|