以下是创建委托的一些代码:
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个参数,但此代码有效,编译和工作。你能解释一下发生了什么吗?