为什么下面的代码不能用于(null,null)?

时间:2018-01-26 11:50:37

标签: c#

我知道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");
    }
}
}

2 个答案:

答案 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作为参数名称。