Qual é a diferença entre eventos com delegados manipuladores e aqueles sem?
Pergunta
Qual é a diferença entre esta:
this.btnOk.Click += new System.EventHandler(this.btnOK_Click);
e isso?
this.btnOk.Click += this.btnOK_Click;
Ambos trabalham. O primeiro é que o Visual padrões Estúdio para quando você usa os trechos. Mas parece que apenas os anúncios extra de palavreado, ou estou faltando alguma coisa?
Solução
Não há diferença. Omitindo a instanciação delegado é apenas doces sintaxe; o compilador C # gerará a instanciação delegado para você sob o capô.
Outras dicas
Em C # 3.0 e posterior este é nenhuma diferença. Antes de C foram obrigados # 3.0 EventHandlers devido às limitações do compilador, mas com o advento do C # 3.0, a segunda forma é preferível a menos que você quer ser muito explícito.
Eu acredito que C # desde 3.0 adicionou implicitamente o delegado manipulador. No entanto, ele pode ajudar a ser mais explícito, especialmente quando há vários tipos possíveis de delegados.
"+ = Delegate_Name" é um açúcar de sintaxe. Compilador criará nova embalagem para você.