为什么(发件人,e)=> SomeAction()适用于winforms,而不适用于asp.net

时间:2010-10-25 18:33:53

标签: .net-4.0 delegates lambda

我有以下代码:

btnTest.Click += (sender,e) => SomeAction()

为什么这段代码在WinForms中有效,而在asp.net中无效。在asp.net中,我必须执行以下操作:

btnTest.Click += new EventHandler(SomeAction);

两种情况下的目标框架是.net 4.0

2 个答案:

答案 0 :(得分:1)

你是否有可能试图打电话

btnTest.Click += (sender,e) => SomeAction() 

从Page_Load方法或其他事件处理程序?在这种情况下,参数“sender”和“e”已经被声明,并且可能导致冲突。

将定义更改为:

btnTest.Click += (s,ea) => SomeAction();

您可能希望将参数转发给您的函数:

btnTest.Click += (s,ea) => SomeAction(s, ea);

答案 1 :(得分:0)

它适用于我的ASP.NET 4.0:

public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
   }

   private void SomeFunc()
   {
      Button1.Click += (sender, e) => SomeAction();
   }

   private void SomeAction()
   {
   }
}