C#利用lambda实现委托事件的挂接

本文探讨了在C#编程中如何使用lambda表达式解决委托事件挂接时需访问局部变量的问题。通过lambda表达式,可以在不增加额外形参的情况下,方便地在事件处理函数中引用和操作局部变量。
摘要由CSDN通过智能技术生成

在写一个小程序的时候,碰到了这样的问题,需要用委托来挂接事件,但是又想在这事件中使用局部的变量,而委托一旦定义好后,挂接方就没有办法再添加额外的形参了。那有没有什么 办法,可以实现呢?
委托定义如下:

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 事件,同时想将参数requestHandleSocket传入,以便后续处理。
      }
}




第一个想法是利用delegate,但是失败了。因为虽然挂接上去了,委托传进的参数丢了,无法进行后续操作。
private void test(Socket requestHandleSocket)
{ 
linkOuterSocket.receiveCompleted += delegate {
//To do
};
}<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值