From: Tony Johansson on
Hi!

Below is a snippet of a class Test
Normally when you use events and want to subscribe to an event you use
statement like this
timer.Tick += new EventHandler(t_Tick);
In the class below you can subscribe to an event by writing this statement
timer.Tick += t_Tick;
instead and skip the delegate EventHandler and it works and I'm very
surprised.

So can somebody explain why it't possible to subscribe to an event by using
this statement
timer.Tick += t_Tick;

public partial class Test : Form
{
private Timer timer;

public Test()
{
timer = new Timer();
timer.Interval = 1000;
//timer.Tick += new EventHandler(t_Tick);
timer.Tick += t_Tick;
timer.Start();
}

void t_Tick(object sender, EventArgs e)
{
//some code here
}

//Tony


From: Tom Shelton on
On 2010-02-02, Tony Johansson <johansson.andersson(a)telia.com> wrote:
> Hi!
>
> Below is a snippet of a class Test
> Normally when you use events and want to subscribe to an event you use
> statement like this
> timer.Tick += new EventHandler(t_Tick);
> In the class below you can subscribe to an event by writing this statement
> timer.Tick += t_Tick;
> instead and skip the delegate EventHandler and it works and I'm very
> surprised.
>
> So can somebody explain why it't possible to subscribe to an event by using
> this statement
> timer.Tick += t_Tick;
>
> public partial class Test : Form
> {
> private Timer timer;
>
> public Test()
> {
> timer = new Timer();
> timer.Interval = 1000;
> //timer.Tick += new EventHandler(t_Tick);
> timer.Tick += t_Tick;
> timer.Start();
> }
>
> void t_Tick(object sender, EventArgs e)
> {
> //some code here
> }
>
> //Tony


That is a feature added in the C# 2.0 language - the compiler infers the type
of the delegate and does the construction for you.

--
Tom Shelton