J'ai toujours attribué des gestionnaires d'événements comme celui-ci, guidé par Intellensense Auto-Achion. J'ai récemment remarqué que l'un de mes collègues le fait de cette façon. P> < PRE> XXX PRE> Les deux méthodes sont syntaxiquement correctes, compiler et se comporter comme prévu. p> Quelles sont les différences, les avantages ou les inconvénients de ces méthodes. Entraîne-ils le même code IL ou y a-t-il une différence subtile que je dois savoir? P> p>
4 Réponses :
Aucune différence, il en résulte le même IL. P>
C'est juste un moyen de dire la même chose avec moins de code. P>
Quelles sont les différences, les avantages ou les inconvénients de ces méthodes. P> blockQuote>
La deuxième méthode est nouvelle, c'est-à-dire qu'elle n'est prise en charge que depuis C # 2.0 (je crois), qui a ajouté une conversion automatique d'un groupe de méthodes (c'est-à-dire un nom de méthode) à un délégué. L'appel du constructeur est ainsi ajouté par le compilateur et la deuxième méthode n'est que du sucre syntaxique pour le premier. P>
À cause de cela, il n'y a pas d'autres différences entre les deux. p>
Puisque la deuxième méthode fait la même chose que la première, avec moins de syntaxe, elle devrait être préférée. P>
De plus, si vous modifiez la signature de l'événement, vous n'avez besoin que de modifier le code dans deux endroits, la déclaration d'événement et le gestionnaire lui-même, mais pas partout où vous assignez / décevoir le gestionnaire.
+1, cependant quant à "devrait être préféré" c'est discutable. Si vous tapez + = suivi en frappant la touche TAB générée deux fois la syntaxe plus récente, je suis d'accord. Actuellement, le moyen le plus rapide d'ajouter un gestionnaire d'événements est de générer la syntaxe plus ancienne avec l'aide des IDes.
@Matthew Schaarley: Si vous utilisez le soutien intégré de refactoring intégré de Visual Studio, vous n'aurez pas à vous soucier de telles choses.
@Anthony: Je suis un perfectionniste compulsif, j'utilise l'achèvement automatique, puis retournez pour éditer le sh * T it produit manuellement. L'encombrement visuel dans le code est Teh ennemi b>.
Merci les gars. Je pense que je vais commencer à utiliser le deuxième formulaire alors.
Le résultat est le même dans les deux cas. Mais dans ces derniers, le compilateur C # déduira le type EventHandler du code, ce qui vous permettra ainsi quelques coups de clé. P>
Oui, le compilateur crée le même code IL dans les deux cas, le second cas est juste Syntax Sugar P>