39 votes

Suppression des gestionnaires d'événements

C'est ça :

Button.Click -= new EventHandler(Button_Click);

la même chose que ça :

Button.Click -= Button_Click;

Je pose la question parce qu'il me semble que la première consiste à supprimer une nouvelle référence à une méthode, et la seconde à supprimer une méthode elle-même. Mais encore une fois, peut-être que la nouvelle partie EventHandler est implicite dans la surcharge += ou -= au cas où le programmeur ne l'assigne pas explicitement comme ça ?

Si c'est différent, que diriez-vous de

Button.Click -= new EventHandler(Button_Click);

VS

Button.Click -= Button_Click;

Merci.

46voto

Konrad Rudolph Points 231505

C'est la même chose. La seconde est simplement un sucre syntaxique pour la première, et la comparaison d'égalité est surchargée de manière appropriée pour les types de délégués :

Deux délégués du même type avec les mêmes cibles, méthodes et listes d'invocation sont considérés comme égaux.

Source : MSDN, Opérateur Delegate.Equality

0voto

Brian Gideon Points 26683

Le résultat final est le même. Le compilateur déduit automatiquement le type de délégué et, par conséquent, l'opérateur new n'est pas nécessaire pour le créer.

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