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