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# 将委托作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章