2009-08-20 7 views
38

Est-ce:Suppression des gestionnaires d'événements

Button.Click -= new EventHandler(Button_Click); 

la même chose que ceci:

Button.Click -= Button_Click; 

Je demande parce que pour moi, il semble que le premier est la suppression d'une nouvelle référence à une méthode, et celle-ci on enlève une méthode elle-même. Mais là encore, peut-être que la nouvelle partie EventHandler est implicite dans la surcharge + = ou - = au cas où le programmeur ne l'assignerait pas explicitement comme ça?

Dans le cas où il est différent que diriez-vous

Button.Click -= new EventHandler(Button_Click); 

VS

Button.Click -= Button_Click; 

Merci.

Répondre

45

C'est pareil. La seconde est que le sucre syntaxique pour la première, et la comparaison de l'é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 objectifs, des méthodes et des listes d'invocation sont considérés comme égaux.

Source: MSDN, Delegate.Equality Operator

+0

Merci pour la réponse. – Carlo

0

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

Questions connexes