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

.net 4.0 为什么(发件人,e)=>;SomeAction()适用于winforms,而不适用于asp.net,.net-4.0,delegates,lambda,.net 4.0,Delegates,Lambda,我有以下代码: btnTest.Click += (sender,e) => SomeAction() 为什么此代码在WinForms中工作而在asp.net中不工作。在asp.net中,我必须执行以下操作: btnTest.Click += new EventHandler(SomeAction); 在这两种情况下,目标框架都是.net 4.0对于我来说,ASP.net 4.0运行良好: public partial class _Default : System.Web.UI.Pa

我有以下代码:

btnTest.Click += (sender,e) => SomeAction()
为什么此代码在WinForms中工作而在asp.net中不工作。在asp.net中,我必须执行以下操作:

btnTest.Click += new EventHandler(SomeAction);

在这两种情况下,目标框架都是.net 4.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()
   {
   }
}

你有可能打电话吗

btnTest.Click += (sender,e) => SomeAction() 
从页面加载方法或其他事件处理程序内部?在这种情况下,参数“sender”和“e”已经声明,可能会导致冲突

将定义更改为:

btnTest.Click += (s,ea) => SomeAction();
不过,您可能希望将参数转发到函数:

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

您的Page_Load已经定义了sender和e,因此您不能在事件委托声明中将它们用作参数。