Qual è la differenza tra Eventi con Gestori delegati e quelli senza?
Domanda
Qual è la differenza tra questo:
this.btnOk.Click += new System.EventHandler(this.btnOK_Click);
e questo?
this.btnOk.Click += this.btnOK_Click;
Entrambi funzionano. Il primo è quello predefinito di Visual Studio quando si utilizzano i frammenti. Ma sembra solo annunci pubblicitari extra, o mi sto perdendo qualcosa?
Soluzione
Nessuna differenza. Omettere l'istanza del delegato è solo caramella di sintassi; il compilatore C # genererà l'istanza del delegato per te sotto il cofano.
Altri suggerimenti
In C # 3.0 e versioni successive questa non è una differenza. Prima che EventHandlers di C # 3.0 fossero richiesti a causa delle limitazioni del compilatore, ma con l'avvento di C # 3.0, il secondo modulo è preferito a meno che tu non voglia essere molto esplicito.
Credo che C # dalla 3.0 abbia aggiunto implicitamente il gestore delegato. Tuttavia, può essere più esplicito, soprattutto in presenza di più tipi di delegati possibili.
" + = Delegate_Name " è uno zucchero sintattico. Il compilatore creerà un nuovo wrapper per te.