繁体   English   中英

为什么下面的代码不能与(null,null)一起使用?

[英]Why doesn't below code work with (null,null)?

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

(null, null) =>是lambda表达式。 现在,您将保留关键字null用作方法参数的名称。 那是不允许的。

您应该给参数实名,或使用_丢弃它们:

this.messageButton.Click += (_, __) => MessageBox.Show("Hello");

因为这等效于方法声明。

在做

this.messageButton.Click += (foo, bar) => MessageBox.Show("Hello");

相当于这个

this.messageButton.Click += ClickHandler;

public static void ClickHandler(object null, EventArgs null)
{
}

而且您不能使用null作为参数名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM