亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# 中如何利用lambda實現(xiàn)委托事件的掛接

 更新時間:2013年07月19日 11:23:12   作者:  
在寫一個小程序的時候,碰到了這樣的問題,需要用委托來掛接事件,但是又想在這事件中使用局部的變量,而委托一旦定義好后,掛接方就沒有辦法再添加額外的形參了。那有沒有什么辦法,可以實現(xiàn)呢

委托定義如下:

復(fù)制代碼 代碼如下:

public class SocketSp
{
 public delegate void ReceiveCompleted(byte[] receiveBuffer, int receiveTotalLen,Exception ex);
 public ReceiveCompleted receiveCompleted;
}

掛接方定義如下
復(fù)制代碼 代碼如下:

public class LinkOuter
{
 SocketSp linkOuterSocket = new SocketSp();


       private void test(Socket requestHandleSocket)
      {
           //此處要掛接  linkOuterSocket.receiveCompleted 事件,同時想將參數(shù)requestHandleSocket傳入,以便后續(xù)處理。
      }
}


第一個想法是利用delegate,但是失敗了。因為雖然掛接上去了,委托傳進(jìn)的參數(shù)丟了,無法進(jìn)行后續(xù)操作。
復(fù)制代碼 代碼如下:

private void test(Socket requestHandleSocket)
{
linkOuterSocket.receiveCompleted += delegate {
//To do
};
}

第二個想法是利用Action,結(jié)果也失敗了。IDE提示委托Action未采用3個參數(shù)。
復(fù)制代碼 代碼如下:

private void test(Socket requestHandleSocket)
{
linkOuterSocket.receiveCompleted += (Action)((outerReceiveBuffer, totalLen, ex) => {
//To do
});
}

第三個想法是利用lambda表達(dá)式,先與委托掛接,同時利用局部變量的調(diào)用,來實現(xiàn)參數(shù)傳遞到sendResponse函數(shù)中,以便后續(xù)操作。
復(fù)制代碼 代碼如下:

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á)式實現(xiàn)了。

相關(guān)文章

  • 基于WPF實現(xiàn)繪制地鐵路線圖

    基于WPF實現(xiàn)繪制地鐵路線圖

    經(jīng)常坐地鐵,卻不知道地鐵多少條線路?哪個站下車?本文就來帶大家利用WPF繪制深圳地鐵路線圖,從而帶大家掌握WPF在圖形繪制方面的一些知識,希望對大家有所幫助
    2023-06-06
  • Unity?數(shù)據(jù)存儲和讀取的方法匯總

    Unity?數(shù)據(jù)存儲和讀取的方法匯總

    這篇文章主要介紹了Unity?數(shù)據(jù)存儲和讀取的方法,本文通過四種方法在 Unity 中實現(xiàn)數(shù)據(jù)存儲和讀取方法的案例內(nèi)容,結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • C# WinForm實現(xiàn)自動更新程序的方法詳解

    C# WinForm實現(xiàn)自動更新程序的方法詳解

    這一篇就著重寫一下客戶端的代碼,客戶端主要實現(xiàn)的有:啟動后檢測本地的xml文件,然后發(fā)送到服務(wù)器獲取需要更新的文件以及版本列表,感興趣的小伙伴可以了解一下
    2022-10-10
  • C#網(wǎng)絡(luò)爬蟲代碼分享 C#簡單的爬取工具

    C#網(wǎng)絡(luò)爬蟲代碼分享 C#簡單的爬取工具

    這篇文章主要為大家詳細(xì)介紹了C#網(wǎng)絡(luò)爬蟲代碼,教大家如何制作了簡單的爬取工具,感興趣的小伙伴們可以參考一下
    2016-07-07
  • C#實現(xiàn)記事本查找與替換功能

    C#實現(xiàn)記事本查找與替換功能

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)記事本查找與替換功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • npoi2.0將datatable對象轉(zhuǎn)換為excel2007示例

    npoi2.0將datatable對象轉(zhuǎn)換為excel2007示例

    這篇文章主要介紹了npoi2.0將datatable對象轉(zhuǎn)換為excel2007示例的相關(guān)資料
    2014-04-04
  • C#中實現(xiàn)Json序列化與反序列化的幾種方式

    C#中實現(xiàn)Json序列化與反序列化的幾種方式

    C#中實現(xiàn)Json的序列化與反序列化也算是個老話題,那么在這篇文章中我們將老話重提,本文中將會學(xué)到如何使用C#,來序列化對象成為Json格式的數(shù)據(jù),以及如何反序列化Json數(shù)據(jù)到對象。有需要的朋友們可以參考借鑒,下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • C#方法中參數(shù)ref和out詳解

    C#方法中參數(shù)ref和out詳解

    這篇文章主要為大家詳細(xì)介紹了C#方法中參數(shù)ref和out的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C#實現(xiàn)自定義FTP操作封裝類實例

    C#實現(xiàn)自定義FTP操作封裝類實例

    這篇文章主要介紹了C#實現(xiàn)自定義FTP操作封裝類,涉及C#操作FTP的連接、傳輸、下載等操作的實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • C#實現(xiàn)判斷一個時間點是否位于給定時間區(qū)間的方法

    C#實現(xiàn)判斷一個時間點是否位于給定時間區(qū)間的方法

    這篇文章主要介紹了C#實現(xiàn)判斷一個時間點是否位于給定時間區(qū)間的方法,涉及C#針對時間的轉(zhuǎn)換與判定相關(guān)技巧,需要的朋友可以參考下
    2015-08-08

最新評論