C#调用具有缺失参数的委托构造函数&没有默认值

时间:2017-06-06 17:56:17

标签: c# constructor delegates

以下是创建委托的一些代码:

    public Ticker()
    {
        System.Timers.Timer timer = new System.Timers.Timer(1000.0);
        timer.Elapsed += new ElapsedEventHandler(SendTimeUpdates);
    }

    public void SendTimeUpdates(object source, ElapsedEventArgs e)
    {
        SendAlerts(false);
    }

然而,当我看到ElapsedEventHandler的定义时,我看到了:

public delegate void ElapsedEventHandler(object sender, ElapsedEventArgs e);

为了构造这个对象,你需要传递两个值。但是,前面的代码通过传递对与签名匹配的函数的引用而消失。

我认为为了创建一个ElapsedEventHandler实例,你需要这样做:

timer.Elapsed = new ElapsedEventHandler(mySender, eventArgs);

我没有看到任何重载的构造函数(或可选的默认值)只接受1个参数,但此代码有效,编译和工作。你能解释一下发生了什么吗?

0 个答案:

没有答案