74 votes

C#: Différence entre "+ = anEvent' et ' += new EventHandler(anEvent)'

Prenez le code ci-dessous:

private void anEvent(object sender, EventArgs e) {
    //some code
}


Quelle est la différence entre la suivante ?

[object].[event] += anEvent;

//and

[object].[event] += new EventHandler(anEvent);

[Mise à JOUR]

Apparemment, il n'y a pas de différence entre les deux...le premier est juste sucre syntaxique de ce dernier.

78voto

driis Points 70872

Il n'y a pas de différence. Dans ton premier exemple, le compilateur va automatiquement déduire le délégué vous souhaitez instancier. Dans le deuxième exemple, vous définissez explicitement le délégué.

Délégué de l'inférence a été ajouté en C# 2.0. Ainsi, pour le C# 1.0 projets, second exemple est votre seule option. Pour les projets 2.0, le premier exemple d'utilisation de l'inférence est ce que je préfère à utiliser et à voir dans la base de code - car il est plus concis.

17voto

Martin Jonáš Points 1915
[object].[event] += anEvent;

est juste sucre syntaxique pour -

[object].[event] += new EventHandler(anEvent);

11voto

Megacan Points 1856

Je ne pense pas qu'il y a une différence. Le compilateur transforme la première en la seconde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X