Quelle est la différence entre les événements avec des gestionnaires de délégué et ceux sans?
Question
Quelle est la différence entre ceci:
this.btnOk.Click += new System.EventHandler(this.btnOK_Click);
et cela?
this.btnOk.Click += this.btnOK_Click;
Ils travaillent tous les deux. La valeur par défaut est Visual Studio lorsque vous utilisez les extraits. Mais il me semble qu’il ne reste que des annonces extra verbiage, ou est-ce que je manque quelque chose?
La solution
Aucune différence. Omettre l’instanciation des délégués n’est qu’une pure syntaxe; le compilateur C # générera l’instanciation de délégué pour vous sous le capot.
Autres conseils
Dans C # 3.0 et les versions ultérieures, cela ne fait aucune différence. Avant les gestionnaires d'événements C # 3.0 étaient nécessaires en raison des limitations du compilateur, mais avec l'avènement de C # 3.0, le second formulaire est préférable, sauf si vous souhaitez être très explicite.
Je pense que C # depuis 3.0 a implicitement ajouté le gestionnaire de délégués. Toutefois, il peut être utile d’être plus explicite, en particulier lorsque plusieurs types de délégués sont possibles.
" + = nom-délégué " est un sucre de syntaxe. Le compilateur créera un nouveau wrapper pour vous.