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?
Vous devez vous connecter pour publier un commentaire.
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 seulement façon de faire les choses.
La deuxième façon donne plus de flexibilité et de sécurité de type. Il y a moins de méthodes correspondant signature => moins de place pour l'erreur. Délégué personnalisé permet de spécifier les paramètres dont vous avez besoin (ou spécifiez pas un) - non expéditeur+args culte du cargo.