C# 中如何利用lambda實(shí)現(xiàn)委托事件的掛接
委托定義如下:
public class SocketSp
{
public delegate void ReceiveCompleted(byte[] receiveBuffer, int receiveTotalLen,Exception ex);
public ReceiveCompleted receiveCompleted;
}
掛接方定義如下
public class LinkOuter
{
SocketSp linkOuterSocket = new SocketSp();
private void test(Socket requestHandleSocket)
{
//此處要掛接 linkOuterSocket.receiveCompleted 事件,同時(shí)想將參數(shù)requestHandleSocket傳入,以便后續(xù)處理。
}
}
第一個(gè)想法是利用delegate,但是失敗了。因?yàn)殡m然掛接上去了,委托傳進(jìn)的參數(shù)丟了,無(wú)法進(jìn)行后續(xù)操作。
private void test(Socket requestHandleSocket)
{
linkOuterSocket.receiveCompleted += delegate {
//To do
};
}
第二個(gè)想法是利用Action,結(jié)果也失敗了。IDE提示委托Action未采用3個(gè)參數(shù)。
private void test(Socket requestHandleSocket)
{
linkOuterSocket.receiveCompleted += (Action)((outerReceiveBuffer, totalLen, ex) => {
//To do
});
}
第三個(gè)想法是利用lambda表達(dá)式,先與委托掛接,同時(shí)利用局部變量的調(diào)用,來(lái)實(shí)現(xiàn)參數(shù)傳遞到sendResponse函數(shù)中,以便后續(xù)操作。
private void test(Socket requestHandleSocket)
{
linkOuterSocket.receiveCompleted += new SocketSp.ReceiveCompleted((outerReceiveBuffer,totalLen,ex) =>
{
byte[] realOuterReceiveBuffer = new byte[totalLen];
Array.Copy(outerReceiveBuffer, 0, realOuterReceiveBuffer, 0, totalLen);
sendResponse(requestHandleSocket, realOuterReceiveBuffer,"200 OK", "text/html");
});
}
最終用lambda表達(dá)式實(shí)現(xiàn)了。
- C#基礎(chǔ)之Lambda表達(dá)式用法實(shí)例教程
- C#中使用Lambda表達(dá)式自定義比較器實(shí)現(xiàn)兩個(gè)列表合并實(shí)例
- C# Lambda表達(dá)式用途深入理解
- C#中方法的直接調(diào)用、反射調(diào)用與Lambda表達(dá)式調(diào)用對(duì)比
- 初步認(rèn)識(shí)C#中的Lambda表達(dá)式和匿名方法
- C#3.0中Lambda表達(dá)式詳解
- C#用Lambda和委托實(shí)現(xiàn)模板方法
- 理解C#中的Lambda表達(dá)式
- C# Lambda 知識(shí)回顧
- 利用lambda表達(dá)式樹(shù)優(yōu)化反射詳解
相關(guān)文章
Unity編輯器預(yù)制體工具類PrefabUtility常用函數(shù)和用法
這篇文章主要為大家介紹了Unity編輯器預(yù)制體工具類PrefabUtility常用函數(shù)及用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Unity技術(shù)手冊(cè)之Button按鈕使用實(shí)例詳解
這篇文章主要為大家介紹了Unity技術(shù)手冊(cè)之Button按鈕使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
C#使用Region對(duì)圖形區(qū)域構(gòu)造和填充的方法
這篇文章主要介紹了C#使用Region對(duì)圖形區(qū)域構(gòu)造和填充的方法,實(shí)例分析了Region類圖形操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06
關(guān)于C# Math 處理奇進(jìn)偶不進(jìn)的實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇關(guān)于C# Math 處理奇進(jìn)偶不進(jìn)的實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
C#實(shí)現(xiàn)會(huì)移動(dòng)的文字效果
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)會(huì)移動(dòng)的文字效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
C#利用IDbDataAdapter/IDataReader實(shí)現(xiàn)通用數(shù)據(jù)集獲取
這篇文章主要為大家詳細(xì)介紹了C#利用IDbDataAdapter/IDataReader實(shí)現(xiàn)通用數(shù)據(jù)集獲取的相關(guān)知識(shí),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11

