63 votes

Personnalisé Gestionnaire vs EventHandler<EventArgs>

Récemment, je me demandais si il n'y a aucune différence significative entre ce code:

public event EventHandler<MyEventArgs> SomeEvent;

Et celui-ci:

public delegate void MyEventHandler(object sender, MyEventArgs e);
public event MyEventHandler SomeEvent;

Ils font tous les deux la même chose et je n'ai pas été en mesure de dire toute la différence. Bien que j'ai remarqué que la plupart des classes de la .NET Framework utiliser un gestionnaire d'événements personnalisés délégué pour leurs événements. Est-il une raison spécifique pour cela?

Merci à l'avance!

73voto

Cody Gray Points 102261

Vous avez raison; ils font la même chose. Donc, vous devriez probablement préférer l'ancien cours de la dernière parce que c'est plus clair et nécessite moins de frappe.

La raison que beaucoup de la .NET Framework classes ont leur propre gestionnaire d'événements personnalisés délégués est parce qu'ils ont été écrits avant les génériques (qui a permis de l'abréviation de la syntaxe) ont été introduits dans la version 2.0. Par exemple, presque tous les WinForms bibliothèques ont été écrits avant les génériques, et de retour en ces jours, cette dernière forme est la seule façon de faire les choses.

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