2009-08-20 20 views
38

è questa:Rimozione gestori di eventi

Button.Click -= new EventHandler(Button_Click); 

lo stesso di questo:

Button.Click -= Button_Click; 

Lo chiedo perché a me sembra che il primo è la rimozione di un nuovo riferimento a un metodo, e il secondo uno sta rimuovendo un metodo stesso. Ma poi di nuovo, forse la nuova parte EventHandler è implicita nel sovraccarico + = o - = nel caso in cui il programmatore non lo assegni esplicitamente in questo modo?

Nel caso in cui è diverso come su

Button.Click -= new EventHandler(Button_Click); 

VS

Button.Click -= Button_Click; 

Grazie.

risposta

45

È lo stesso. Il secondo è solo zucchero sintattico per la prima, e confronto di uguaglianza è sovraccarico appropriato per tipi delegato:

Due delegati dello stesso tipo con gli stessi obiettivi, i metodi e gli elenchi di chiamata sono considerati uguali.

Fonte: MSDN, Delegate.Equality Operator

+0

Grazie per la risposta. – Carlo

0

Il risultato finale è lo stesso. Il compilatore sta inferendo il tipo di delegato automaticamente e di conseguenza il nuovo operatore non è tenuto a crearlo.

Problemi correlati