委托、Lambda表达式和事件
生活随笔
收集整理的這篇文章主要介紹了
委托、Lambda表达式和事件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 引用方法 委托是尋址方法的.NET版本。在C++中,函數(shù)指針只不過是一個指向內(nèi)存位置的指針,它不是類型安全的。我們無法判斷這個指針實(shí)際指向什么,像參數(shù)和返回類型等項(xiàng)就更無從知曉了。而.NET委托完全不同,委托是類型安全的類,它定義了返回類型和參數(shù)的類型。委托類不僅包含對方法的引用,也可以包含對多個方法的引用。 Lambda表達(dá)式與委托類型直接相關(guān)。當(dāng)參數(shù)時委托時,就可以使用Lambda表達(dá)式實(shí)現(xiàn)委托引用的方法。 2. 委托 當(dāng)要把方法傳遞給其他方法時,需要使用委托。我們習(xí)慣于把數(shù)據(jù)作為參數(shù)傳遞給方法,而有時某個方法執(zhí)行的操作并不是針對數(shù)據(jù)進(jìn)行的,而是要對另一個方法進(jìn)行操作。更麻煩的是,在編譯時我們不知道第二個方法是什么,這個信息只能在運(yùn)行時得到。所以需要把第二個方法作為參數(shù)傳遞給第一個方法。這聽起來很令人疑惑,下面用幾個例子來說明:
- 啟動線程和任務(wù)——在C#線程的一個基類System.Threading.Thread的一個實(shí)例上使用方法Start(),就可以啟動一個線程。如果要告訴計算機(jī)啟動一個新的執(zhí)行序列,就必須說明要在哪里啟動該序列。必須為計算機(jī)提供開始啟動的方法的細(xì)節(jié),即Thread類的構(gòu)造函數(shù)必須帶有一個參數(shù),該參數(shù)定義了線程調(diào)用的方法。
- 通用庫類——比如Sort(List<T> list,Func<T, T, bool> comparison)函數(shù)實(shí)現(xiàn)快速排序,則需要指定一個方法參數(shù)comparison,告訴排序函數(shù)如何實(shí)現(xiàn)對兩個參數(shù)的比較。
- 事件——一般是通知代碼發(fā)生了什么事件。GUI編程主要處理事件。在引發(fā)事件時,運(yùn)行庫需要知道應(yīng)執(zhí)行哪個方法。這就需要把處理事件的方法作為一個參數(shù)傳遞給委托。
轉(zhuǎn)載于:https://www.cnblogs.com/ChrisLi/p/4189724.html
總結(jié)
以上是生活随笔為你收集整理的委托、Lambda表达式和事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Snmp学习总结系列——开篇
- 下一篇: 使用Httpclient来替代客户端的j