2011-01-13 2 views
6

Possible en double:
Should I Create a New Delegate Instance?C#: quelle est la différence entre SomeEvent + = Méthode et SomeEvent + = nouveau délégué (méthode)

Salut, j'ai essayé de chercher la réponse à cela, mais ne savent pas vraiment quels termes rechercher, et aucune des questions suggérées par le site n'est pertinente. Je suis sûr que cela a dû être répondu avant cependant.

En fait, quelqu'un peut me dire quelle est la différence entre ces deux lignes en C#:

SomeEvent += SomeMethod 
SomeEvent += new SomeDelegate(SomeMethod) 

Par exemple:

DataContextChanged += App_DataContextChanged; 
DataContextChanged += new DependencyPropertyChangedEventHandler(App_DataContextChanged); 

Ils ont tous deux semblent faire la même chose.

Répondre

9

Ils sont identiques. La deuxième variante est juste un raccourci pour le premier appelé Method group conversion. En d'autres termes, le compilateur déduit le type du délégué en utilisant le type délégué de l'événement lui-même. Cela a été introduit en C# 2.0 si je ne me trompe pas.

5

ils font la même chose. La variation

SomeEvent += new SomeDelegate(SomeMethod) 

était la seule façon de l'écrire en C# 1.0, 1.1. Depuis 2.0 vous pouvez écrire l'autre alternative comme une simplification.

3

Les deux sont identiques.

SomeEvent += new SomeDelegate(SomeMethod) 

mentionne ce qui se passe sous le capot i.e. constructeur SomeDelegate est appelé à créer une instance de l'objet.

Questions connexes