.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,因此您不能在事件委托声明中将它们用作参数。