2011-01-13 11 views
6

Duplicar posibles:
Should I Create a New Delegate Instance?C#: ¿cuál es la diferencia entre algunEvento + = Método y algunEvento + = new Delegado (Método)

Hola, he intentado buscar la respuesta a esto, pero realmente no sabe qué términos buscar, y ninguna de las preguntas sugeridas por el sitio son relevantes. Sin embargo, estoy seguro de que esto debe haber sido respondido antes.

Básicamente, puede alguien decirme cuál es la diferencia entre estas dos líneas en C#:

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

Por ejemplo:

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

Ambos parecen hacer lo mismo.

Respuesta

9

Son lo mismo. La segunda variante es solo una abreviatura de la primera llamada Method group conversion.

En pocas palabras, el compilador infiere el tipo de delegado utilizando el tipo de delegado del evento en sí. Esto fue introducido en C# 2.0 si no me equivoco.

5

hacen lo mismo. La variación

SomeEvent += new SomeDelegate(SomeMethod) 

era la única manera de escribirlo en C# 1.0, 1.1. Desde 2.0 puedes escribir la otra alternativa como una simplificación.

3

Ambos son iguales.

SomeEvent += new SomeDelegate(SomeMethod) 

menciones lo que sucede bajo el capó es decir SomeDelegate se llama al constructor para crear una instancia del objeto.

Cuestiones relacionadas