C# 将委托作为参数传递

Posted

技术标签:

【中文标题】C# 将委托作为参数传递【英文标题】:C# Pass a delegate as an argument 【发布时间】:2011-05-29 16:42:48 【问题描述】:

我知道我可以这样做:

WebClient 客户端 = 新 WebClient(); client.UploadStringCompleted += 委托(对象发送者,UploadStringCompletedEventArgs e) //处理事件 ; client.UploadStringAsync(myURI, "POST", "some_data");

但是有没有办法可以将内联委托作为参数传递?像这样的:

DoRequest("some_data", 委托(对象发送者,UploadStringCompletedEventArgs e) //处理事件 ); public void DoRequest(字符串数据,UploadStringCompletedEventHandler 事件) WebClient 客户端 = 新 WebClient(); client.UploadStringCompleted += 事件; client.UploadStringAsync(myURI, "POST", data);

【问题讨论】:

【参考方案1】:

是的,该代码是正确的,但您不能调用参数事件。我也会改用 lambda 表达式,因为它更好。

DoRequest("some_data", (o, e) => /* 处理事件 */);

【讨论】:

【参考方案2】:

是的,除了event 是关键字并且不能用作变量名之外,您可以完全这样写。

【讨论】:

是的,我注意到了。之前,我正在围绕我的一条线包装一个事件,这把事情搞砸了。谢谢

以上是关于C# 将委托作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

将 Objective-C 协议委托作为参数传递

将成员函数作为委托参数传递

.Net C#之委托(带参数函数传递)

委托 lambda表达式浅显理解

C#将函数作为参数传递[重复]

C#将函数作为参数传递[重复]