我知道Click事件接受一个委托,它获取两个参数类型作为Object和EventArgs,下面的代码适用于任何给定的参数,但为什么下面的代码不能使用(null,null)?它只打印出一个字符串。我给null Object
和null EventArgs
这一点无关紧要。(它适用于(foo,bar)或(m,n)例如)
注意:用逗号引发CS1026,CS1002,CS1513错误。
using System.Windows.Forms;
namespace Hello_World
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.messageButton.Click += (null, null) => MessageBox.Show("Hello");
}
}
}
答案 0 :(得分:7)
(null, null) =>
是一个lambda表达式。您现在使用保留关键字null
作为方法参数的名称。这是不允许的。
您应该为参数指定实名,或者使用_
this.messageButton.Click += (_, __) => MessageBox.Show("Hello");
答案 1 :(得分:2)
因为这等同于方法声明。
做
this.messageButton.Click += (foo, bar) => MessageBox.Show("Hello");
等同于此
this.messageButton.Click += ClickHandler;
public static void ClickHandler(object null, EventArgs null)
{
}
并且您不能使用null
作为参数名称。