Удаление обработчиков событий
Это:
Button.Click -= new EventHandler(Button_Click);
то же самое, что и:
Button.Click -= Button_Click;
Я спрашиваю, потому что для меня кажется, что первая удаляет новую ссылку на метод, а вторая удаляет сам метод. Но опять же, может быть, новая часть EventHandler неявна в + = или - = перегрузке, если программист явно не назначает это так?
Если это отличается от
Button.Click -= new EventHandler(Button_Click);
VS
Button.Click -= Button_Click;
Спасибо.
Ответы
Ответ 1
То же самое. Во-вторых, это просто синтаксический сахар для первого, и сравнение равенства перегружено соответствующим образом для типов делегатов:
Два делегата одного типа с одинаковыми целями, методами и списками вызовов считаются равными.
Источник: MSDN, Delegate.Equality Operator
Ответ 2
Конечный результат тот же. Компилятор автоматически выводит тип делегата, и в результате новый оператор не требуется для его создания.