Quelle est la différence entre les événements avec des gestionnaires de délégué et ceux sans?

StackOverflow https://stackoverflow.com/questions/119160

  •  02-07-2019
  •  | 
  •  

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top