【问题标题】:C# Pass a delegate as an argumentC# 将委托作为参数传递
【发布时间】: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); }

【问题讨论】:

    标签: c# visual-studio-2008 visual-studio-2010 events arguments


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的,我注意到了。之前,我正在围绕我的一条线包装一个事件,这把事情搞砸了。谢谢
      猜你喜欢
      • 2015-08-14
      • 2012-07-12
      • 1970-01-01
      • 2013-11-17
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多