2008-09-23 12 views
6

¿Cuál es la diferencia entre esto:¿Cuál es la diferencia entre los eventos con controladores de delegados y los que no?

this.btnOk.Click += new System.EventHandler(this.btnOK_Click); 

y esto?

this.btnOk.Click += this.btnOK_Click; 

Ambos funcionan. El primero es lo que Visual Studio establece de manera predeterminada cuando usa los fragmentos. Pero parece que solo anuncia una verborrea extra, ¿o me falta algo?

+0

posible duplicación de [Controladores de eventos C#] (http://stackoverflow.com/questions/26877/c-sharp-event-handlers) – nawfal

Respuesta

10

Sin diferencia. Omitir la instanciación de delegados es solo un caramelo de sintaxis; el compilador de C# generará la instancia de delegado para usted bajo el capó.

1

Creo que C# desde 3.0 ha agregado implícitamente el controlador delegado. Sin embargo, puede ayudar a ser más explícito, especialmente cuando hay múltiples tipos de delegados posibles.

1

"+ = Delegate_Name" es una sintaxis de azucar. El compilador creará un nuevo contenedor para usted.

4

En C# 3.0 y posterior, esto no es diferente. Antes se requerían C# 3.0 EventHandlers debido a las limitaciones del compilador, pero con la llegada de C# 3.0, se prefiere el segundo formulario a menos que desee ser muy explícito.

Cuestiones relacionadas